7.新建并部署Java EE 7应用
现在你应该学了很多镜像、容器以及将他们连接在一起的东西,是时候学习不同的部署选项了。让我们从Java EE 7 sample applications开始。 Java EE 7 sample applications是一个很普通的Java EE 7应用案例,也是一个绝好的学习开始。
7.1新建应用
我们需要先新建应用。
1. 克隆仓库
git clone
https://github.com/javaee-samp ... e.git
git clone dockeradmin@classroom.exampl e.com:10080/root/javaee7-simple-sample.git" rel="nofollow" target="_blank">http://root:dockeradmin%40clas ... e.git
2. 新建应用
cd javaee7-simple-sample/
#From Internet
mvn clean package
#From Instructor
curl http://classroom.example.com:8 ... s.xml -o settings.xml
mvn -s settings.xml clean package
7.2启动应用服务器
新建文件夹,放置部署并且给写权限
mkdir deployments
chmod a+w deployments
启动WildFly 服务器:
docker run --name wildfly -d -p 8080:8080 -v pwd
/deployments:/opt/jboss/wildfly/standalone/deployments/:rw jboss/wildfly
docker run --name wildfly -d -p 8080:8080 -v pwd
/deployments:/opt/jboss/wildfly/standalone/deployments/:rw classroom.example.com:5000/wildfly
注意:Windows用户需要做下小调整,要复制部署到“c:/Users/<USER>/deployments ”,因为boot2docker 的路径映射在Windows上不一样。请输入如下的参数命令:
'docker run --name wildfly -d -p 8080:8080 -v /c/Users/meisele/deployments:/opt/jboss/wildfly/standalone/deployments/:rw [classroom.example.com:5000|jboss]/wildfly'
这个命令会启动一个名叫” wildfly”的容器。
-v参数会映射一条从主机到容器的参数。这将会是放置部署的路径。rw参数保证了Docker容器能往里面写东西。
检查日志,确认服务器启动了。
docker logs -f wildfly
在浏览器里访问 http://dockerhost:8080 确认实例正在运行。
现在部署应用的准备工作做好了。
7.3配置JBoss Developer Studio
启动JBoss Developer Studio
1. 选择’Servers’按钮,新建server adapter
图10:Server Adapter
2. 分配已存在的或新建一个WildFly 9.0.0 runtime (修改过的属性已高亮。)
图11:WildFly Runtime属性
3. 如果需要创建新的runtime,请选择WildFly 9.0.1的路径:
图12: WildFly 9.0.1.Final Runtime
点击’finish’按钮。
4. 双击选择的server配置server属性
图13:Server属性
主机名指定为’dockerhost’。左边两个圆圈里的属性自动从以前的会话继承。右边两个圆圈里的属性必须取消以保证deployment scanner和server的一致性。
5. 在server编辑器的部署页面指定一个自定义的部署路径
图14:自定义的部署路径
6. 右键新创建的server adapter并点击’start’
图15:启动server
7.4使用共享卷部署应用
1.使用Import → Existing Maven Projects导入javaee7-simple-sample应用的源码
2.右键这个项目,选择’ Run on Server’并选择之前创建的server。
这个项目会运行起来并展示应用的启动页面
图16:启动server
恭喜!
你已经在JBoss Developer Studio部署了第一个跑在Docker容器上的应用WildFly。
停止WildFly容器的命令:
docker stop wildfly
7.5使用CLI部署应用
命令行接口(CLI)是一个连接实例的工具,它能从命令行环境管理所有的任务。你能使用CLI管理的任务如下:
1. 在standalone/Domain模式下部署/卸载web应用。
2. 在runtime上查看所有部署的应用的信息。
3. 在Standalone/Domain模式下启动、停止以及重启节点。
4. 添加/删除子系统到server上。
现在我们使用CLI来部署运行在Docker容器环境的javaee7-simple-sample到WildFly上。
1. CLI需要本地安装,成为WildFly的一部分,在之前下载WildFly的时候应该有提供。解压缩你的下载包到一个目录(例如:/Users/<USER>/tools/)。系统会创建一个wildfly-9.0.0.Final的文件夹。这个文件夹的路径会被变量$WIDLFY_HOME引用。确保增加/Users/<USER>/tools/wildfly-9.0.0.Final/bin到你的$path环境变量。
2. 以固定的端口映射运行“wildfly-management”镜像,如4.5.2固定端口映射(这里应该是一个超链接)描述的那样。
3. 运行jboss-cli命令连接到WildFly实例。
启动WildFly server如下:
docker run --name wildfly-managed -d -p 8080:8080 -p 9990:9990 rafabene/wildfly-admin
docker run --name wildfly-managed -d -p 8080:8080 -p 9990:9990 classroom.example.com:5000/wildfly-management
如下命令会启动一个叫做” wildfly-managed”的容器
jboss-cli.sh --controller=dockerhost:9990 -u=admin -p=docker#admin -c
如下命令展示输出结果
[standalone@dockerhost:9990 /]
部署应用如下:
deploy <javaee7-simple-sample PATH>target/javaee7-simple-sample-1.10.war --force
现在你已经成功的使用CLI远程部署运行在docker容器环境的javaee7-simple-sample到WildFly上面。
7.6使用web控制台部署应用
WildFly有个基于web的管理控制台。它和JBoss Developer Tools以及CLI依赖的是同一套API。这个web控制台提供了一种方便易用的方式来管理WildFly实例。对于一个docker容器,它需要被明确激活,正如 4.5Enabling WildFly Administration(这里应该是一个超链接)里描述的那样。一旦激活,它就能通过 http://dockerhost:9990 被访问。
图17:WildFly web控制台
用户名和密码信息在图5里展示。
注意:你或许想停止并删除在WildFly里运行的容器。这条命令可以做到:docker ps -a | grep wildfly | awk '{print $1}' | xargs docker rm –f
启动一个新的容器的命令为:docker run -d --name wildfly -p 8080:8080 -p 9990:9990 classroom.example.com:5000/wildfly-management
使用web控制台部署应用的步骤如下:
1.进入’Deployments’页面
图18:Deployments页面
2.点击’Add’按钮。
3.在’ Add Deployment’页面,按照缺省设置,点击’Next’。
4.点击’ Choose File’,选择你电脑上的
<javaee7-simple-sample PATH>/javaee7-simple-sample.war文件,这个文件是在7.1Build Application章配置的。
5.点击’Next’。
6.选择’Enable’方框
图19:启用部署
7.点击’Finish’
图20:Java EE 7 Simple Sample部署
已经完成Java EE 7 的应用部署,结果能够在 http://dockerhost:8080/javaee7-simple-sample 里面看到
图21:Java EE 7 Simple Sample的输出结果
7.7使用API部署应用
一个独立的WildFly进程,能通过“本地管理接口”配置来监听远程的管理请求。应用服务器自带的CLI工具能使用这些接口,用户也能开发自定义的客户端来使用这些接口。默认的,WildFly管理接口监听127.0.0.1.当在一个Docker容器里运行的时候,网络接口应该跟公共的地址绑定。这能通过绑定0.0.0.0而不是127.0.0.1来做出改变。
1.启动另一个WildFly实例:
docker run -d --name wildfly -p 8080:8080 -p 9990:9990 rafabene/wildfly-admin
docker run -d --name wildfly -p 8080:8080 -p 9990:9990 classroom.example.com:5000/wildfly-management
除了应用端口8080,管理端口9990也是可用的。WildFly镜像调整启动脚本,将管理端口绑定到了0.0.0.0。
2.在JBoss Developer Studio里创建一个新的server适配器,取名为 “WildFly 9.0.0-Management”,指定主机名为’dockerhost’。
3.点击’Next’修改下图中所示的值
图22:创建server适配器
4.按照’ Remote System Integration’页面的缺省设置,点击’Finish’
5.双击新建的server适配器,修改server的属性。指定管理账号的用户名和密码。注意:需要删除已经存在的密码,见如下图:
图23:管理登录账号
6.右键新建的server适配器并点击’Start’,状态会改变成’Started’状态
图24:同步WildFly Server
7.右键javaee7-simple-sample项目,选择’Run on Server’并选择这个server。这个项目会运行起来并展示启动页面。
8.当结束的时候停止WildFly
docker stop wildfly