Skip to content

Commit dc561be

Browse files
author
Administrator
committed
update
1 parent dae2551 commit dc561be

10 files changed

+1563
-5
lines changed

.DS_Store

6 KB
Binary file not shown.
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
在Docker中运行Java EE程序的九个诀窍
2+
3+
你想要使用使用Docker来运行Java EE应用程序吗?
4+
5+
一个典型的Java EE应用程序包括应用服务器,如WildFly和数据库,如MySQL的。此外,你可能有一个独立的前端层,说阿帕奇,负载均衡一些应用服务器。的高速缓存层,例如Infinispan的,也可以使用,以提高整体的应用性能。消息传送系统,如ActiveMQ的,可用于处理队列。无论是缓存和消息组件可以设置为一个集群进一步扩展性。
6+
7+
此技术提示会显示一些简单的泊坞窗的食谱来配置你的容器使用应用服务器和数据库。随后博客将覆盖更高级的食谱,其中将包括前端,缓存,消息和聚类。
8+
9+
让我们开始吧!
10+
11+
泊坞窗配方#1:使用泊坞窗机设置泊坞窗
12+
13+
如果泊坞窗尚未设置你的机器上,那么作为第一步,你需要设置它。如果你是一个最新版本的Linux,那么你已经有了泊坞窗。或任选可被安装为:
14+
15+
命令和apt-get安装docker.io
16+
在Mac和Windows,这意味着安装boot2docker这是一个Tinycore Linux的虚拟机,并​​配备了泊坞窗主机。然后,你需要配置SSH密钥和证书。
17+
18+
幸运的是,这是非常使用泊坞窗机简化。这需要你从零到泊坞窗的主机用一个命令就。该主机可以是你的笔记本电脑,在云中,或在您的数据中心。它创建的服务器,他们安装泊坞窗,然后配置泊坞窗客户与他们交谈。
19+
20+
这个配方进行了详细解释泊坞窗机到设置泊坞窗主机。
21+
22+
泊坞窗配方#2:应用服务器+内存数据库
23+
24+
其中的Java EE 7的很酷的功能是默认的数据库资源。这可以让你不用担心在应用程序服务器特定之前,你的应用程序可以访问创建一个JDBC资源。任何Java EE 7兼容的应用程序服务器将地图默认的JDBC资源名称(爪哇:比较/ DefaultDataSource)在捆绑的数据库服务器,应用服务器特定的资源。
25+
26+
例如,WildFly捆绑了H2内存数据库。该数据库已准备好,一旦被用作WildFly准备好接受你的请求。这简化了您的开发工作,并允许你做一个快速原型。默认JDBC资源被映射到
27+
java的:JBoss的/数据源/ ExampleDS,然后映射到JDBC的JDBC URL:H2:mem的:测试; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = FALSE。
28+
29+
在这种情况下,数据库服务器是应用程序服务器内部运行其他应用程序。
30+
31+
泊坞窗配方为Java EE应用程序#1
32+
33+
下面是运行的Java EE 7的应用程序中WildFly命令:
34+
35+
泊坞窗运行 - 它-p 8080:8080 arungupta / javaee7-HOL
36+
如果你想运行使用WildFly和H2内存数据库一个​​典型的Java EE 7的应用程序,那么这个泊坞窗配方进行了详细动手实验室的WildFly和码头工人解释的Java EE 7。
37+
38+
泊坞窗配方#3:两个集装箱在相同主机使用链接
39+
40+
以前的配方让你起步很快,但成为一个瓶颈一旦数据库是只在内存中。这意味着,你的架构和数据所做的任何更改应用服务器关闭后丢失。在这种情况下,需要使用驻留在应用服务器外部的数据库服务器。例如,MySQL作为数据库服务器和WildFly作为应用服务器。
41+
42+
让事情变得简单,无论是数据库服务器和应用服务器可以在同一台主机上运行。
43+
44+
泊坞窗配方为Java EE应用程序#2
45+
46+
泊坞窗集装箱链接用来将两个容器相连。创建两个容器之间的联系产生源容器和目标容器和安全地传输有关源容器的信息到目标容器之间的管道。在我们的例子中,目标容器(WildFly)可以看到有关源容器(MySQL的)信息。了解这里最重要的部分是,需要加以公开由源容器暴露没有这个信息,并且只提供给目标容器。
47+
48+
下面是启动MySQL和WildFly容器和连接它们的命令:
49+
50+
泊坞窗运行--name MySQLdb的-e MYSQL_USER =的mysql -e MYSQL_PASSWORD =的mysql -e MYSQL_DATABASE =采样-e MYSQL_ROOT_PASSWORD =绝密-d mysql的
51+
泊坞窗运行--name mywildfly --link MySQLdb的:DB -p 8080:8080 -d arungupta / wildfly-的mysql-javaee7
52+
WildFly和MySQL在两个码头工人的容器相连解释了如何设置这个食谱。
53+
54+
泊坞窗配方#4:两个集装箱在相同主机使用图
55+
56+
以前的配方要求你在一个特定的顺序运行的容器。运行多容器应用程序可以迅速成为具有挑战性的,如果您的应用程序的每一层是坐在一个容器。图(不赞成使用泊坞窗撰写的)是一个泊坞窗编排工具是:
57+
58+
在一个配置文件中定义多个容器
59+
通过创建它们之间的联系建立两个容器之间的依赖关系
60+
以正确的顺序启动容器
61+
泊坞窗配方为Java EE应用程序#3
62+
63+
的入口点图是一个配置文件,如下所示:
64+
65+
MySQLdb的:
66+
  图片:mysql的:最新
67+
  环境:
68+
    MYSQL_DATABASE:样品
69+
    MYSQL_USER:MySQL的
70+
    MYSQL_PASSWORD:MySQL的
71+
    MYSQL_ROOT_PASSWORD:绝密
72+
mywildfly:
73+
  图片:arungupta / wildfly-的mysql-javaee7
74+
  链接:
75+
     - MySQLdb的:DB
76+
  端口:
77+
     - 8080:8080
78+
和所有的容器可以开始为:
79+
80+
无花果了-d
81+
利用图泊坞窗编排解释了这个配方的细节。
82+
83+
图只接收更新。它的代码库作为基础泊坞窗撰写。这将在接下来的配方进行说明。
84+
85+
泊坞窗配方#5:两个集装箱在相同主机使用撰写
86+
87+
泊坞窗撰写是用于定义和使用泊坞窗运行复杂应用程序的工具。与撰写,您可以定义在一个文件中的多容器应用程序,然后旋转你的应用中,确实需要做才能得到它运行一切一条命令。
88+
89+
应用程序配置文件是相同的格式由图该容器可以开始为:
90+
91+
泊坞窗,撰写了-d
92+
这个配方进行了详细解释泊坞窗撰写编排容器。
93+
94+
泊坞窗配方#6:两个集装箱在不同的主机使用的IP地址
95+
96+
在先前的配方,将两个容器的同一主机上运行。这两个可以使用泊坞窗链接很容易沟通。但简单的容器联不允许跨主机通信。
97+
98+
在同一台主机上运行的容器意味着你不能扩展每个层,数据库或应用程序服务器,独立。这是你需要一个单独的主机上运行的每个容器。
99+
100+
泊坞窗配方为Java EE应用程序#4
101+
102+
MySQL的容器可以作为开始:
103+
104+
泊坞窗运行--name MySQLdb的-e MYSQL_USER =的mysql -e MYSQL_PASSWORD =的mysql -e MYSQL_DATABASE =采样-e MYSQL_ROOT_PASSWORD =绝密-p 5306:3306 -d mysql的
105+
JDBC资源可以被创建为:
106+
107+
数据源添加--name = mysqlDS --driver名= mysql的--jndi名= java的:JBoss的/数据源/ ExampleMySQLDS --connection-url=jdbc:mysql://$MYSQL_HOST:$MYSQL_PORT/sample?useUnicode=true&characterEncoding=UTF-8 --user名= mysql的--password = mysql的--use-CCM =假--max池大小= 25 --blocking超时等待,米利斯= 5000 --enabled =真
108+
和WildFly容器可以为启动:
109+
110+
泊坞窗运行--name mywildfly -e MYSQL_HOST = <IP地址> -e MYSQL_PORT = 5306 -p 8080:8080 -d arungupta / wildfly-的mysql-javaee7
111+
完整的细节这个配方在多个主机泊坞窗容器联解释。
112+
113+
泊坞窗配方#7:两个容器上使用泊坞窗群不同的主机
114+
115+
泊坞窗机
116+
117+
泊坞窗群是本地集群的码头工人。原来泊坞窗主机池成一个单一的,虚拟主机。它拿起向上,其中泊坞窗机通过优化主机资源利用率​​,并提供故障转移服务留下了。具体来说,泊坞窗群允许用户创建运行泊坞窗守护进程的主机资源池,然后安排泊坞窗容器之上运行,自动管理工作量安置和维护群集状态。
118+
119+
关于这个配方的更多细节即将在随后的博客。
120+
121+
泊坞窗配方#8:从Eclipse中部署Java EE应用程序
122+
123+
最后一个配方将处理如何将现有的应用程序部署到泊坞窗容器。
124+
125+
比方说,你正在使用JBoss的工具为你的开发环境和WildFly为您的应用程序服务器。
126+
127+
Eclipse的标志JBoss的工具徽标
128+
129+
有一对夫妇的方法,使这些应用程序可以部署:
130+
131+
使用泊坞窗卷+本地部署:在这里,你的本地计算机上的某个目录安装为泊坞窗卷。 WildFly泊坞窗容器开始通过映射该目录的部署目录为:
132+
泊坞窗运行 - 它-p 8080:8080 -v /用户/ arungupta的/ tmp /部署中:/ opt / JBoss的/ wildfly /独立/部署/:RW的JBoss / wildfly
133+
配置JBoss工具WAR文件部署到该目录。
134+
135+
使用WildFly管理API +远程部署:启动WildFly泊坞窗容器,还揭露管理端口9990为:
136+
泊坞窗运行 - 它-p 8080:8080 -p 9990:9990 arungupta / wildfly管理
137+
配置JBoss的工具来使用远程服务器WildFly和部署使用管理API。
138+
139+
这个配方进行了详细的部署,从Eclipse的解释WildFly和泊坞窗。
140+
141+
泊坞窗配方#9:使用的Arquillian立方测试的Java EE应用程序
142+
143+
的Arquillian立方允许您控制泊坞窗图像的生命周期作为测试生命周期的一部分,无论是自动还是手动。多维数据集使用泊坞窗REST API交谈的容器。它使用了远程适配器的API,例如WildFly在这种情况下,进行通话的应用程序服务器。泊坞窗的配置被指定为Maven的万无一失,作为插件的一部分:
144+
145+
<配置​​>
146+
    <systemPropertyVariables>
147+
    <arquillian.launch> wildfly-泊坞窗</arquillian.launch>
148+
    <arq.container.wildfly-docker.configuration.username>admin</arq.container.wildfly-docker.configuration.username>
149+
    <arq.container.wildfly-docker.configuration.password>Admin#70365</arq.container.wildfly-docker.configuration.password>
150+
    <arq.extension.docker.serverVersion> 1.15 </arq.extension.docker.serverVersion>
151+
    <arq.extension.docker.serverUri> http://127.0.0.1:2375 </arq.extension.docker.serverUri>
152+
    <arq.extension.docker.dockerContainers>
153+
        wildfly-泊坞窗:
154+
            图片:arungupta / javaee7样本,wildfly
155+
            exposedPorts:[8080 / TCP,9990 / TCP]
156+
            等待:
157+
                策略:投票
158+
                sleepPollingTime:50000
159+
                迭代:5
160+
            portBindings:[8080 / TCP,9990 / TCP]
161+
    </arq.extension.docker.dockerContainers>
162+
    </ systemPropertyVariables>
163+
</配置>
164+
可使用的Arquillian立方的码头工人运行的Java EE测试这个食谱完整细节。
165+
166+
你使用的是什么其他的配方使用泊坞窗来部署Java EE应用程序?
167+
168+
享受!
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
作为一个非常大的简化,可以看到泊坞窗(和一般的容器),薄的虚拟机,Openshift具有自己的Heroku和OpenStack的是拥有自己的AWS。
2+
3+
泊坞窗容器使用,让你在运行一个独立的网络应用程序,Linux内核的功能/内存/程序/文件系统环境,并增加了使用的unionfs的,所以你可以有一个“父”只写磁盘,一个孩子写的图像文件系统,在那里你有,如果你修改父文件写入时复制,并且能够让你有几个孩子共享相同的父(所以如果你有使用Ubuntu的基本安装,你只有一次几个容器,即使缓存上存储器一次)。它有一个灵活的API和命令行工具,用于创建容器,做一些基本的管理,把它们放在中央或你自己的资料库和更多。也让容器关联容器(想想之一DB,另一个用于Web服务器,一个不那么平凡的Web应用程序)链接更容易给对方。以及管理他们给自己的名字,以一堆相互关联的容器(齿轮,墨盒,kubelets等)的系统。和容器,因为他们本身运行作为一个普通的Linux内核下的应用,甚至可以在Linux已经内运行虚拟机运行。
4+
5+
和API使用几个项目,如CoreOS(觉得一个Linux发行意味着运行容器超过应用程序,有一些包括组件来帮助管理/成簇分布的容器),谷歌的Kubernetes(也意味着在集群上运行的容器,相关联的几个人在应该一起运行)组,或图(你也可以定义容器团体和它们之间的关系)。
6+
7+
OpenShift已经存在的时候泊坞窗曝光后,我认为这是基于LXC当时的情况。我看到在演示文稿的工作流程是开发商commiting到存储库,并得到发表在一个网站,或者至少让功能都要经过测试/分期/生产阶段的所有协调Openshift。使用泊坞窗优化了很多的工作流程,以及最新的迭代也使用Kubernetes来协调他们。你奉献了一堆机器(如裸机硬件或虚拟机)上运行它,它管理的工作流程,在需要时提供容器。其不是基于多克尔,Dokku,弗林或DEIS唯一的PaaS是他人的几个例子。
8+
9+
OpenStack的云的基础设施即服务水平,让你建立的东西了AWS的规模,为您提供一种方式来获得的虚拟机,所以你可以单独运行的虚拟机(运行Linux或其它操作系统),或用自己的网络中部署集群/存储/等。但也有司机部署泊坞窗的容器,而不是完整的虚拟机,以获得更多的服务密度虚拟化/裸机机。
10+
11+
这3个可在不同​​的抽象级别,并且可以使用它们本身,但是每一个都可以使用他人得到改善。

0 commit comments

Comments
 (0)