设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

为Java EE应用提供的9种Docker方法

2015-3-26 17:31| 发布者: joejoe0332| 查看: 3845| 评论: 0|原作者: 霍啸林, 伯松, 吴利明, BillHan|来自: oschina

摘要: 你想在 Java EE 应用中使用 Docker 吗?本文将先讲解一个简单 Docker 容器配置方法:包括应用服务器和数据库。接下来将讲解几个高级应用方法:包括前端负载、缓存、消息中间件和集群。 ...


  MySQL容器可以这样启动:

1
2
3
 
docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 5306:3306 -d mysql
 


  JDBC资源可以这样创建:

1
2
3
 
data-source add --name=mysqlDS --driver-name=mysql --jndi-name=java:jboss/datasources/ExampleMySQLDS --connection-url=jdbc:mysql://$MYSQL_HOST:$MYSQL_PORT/sample?useUnicode=true&characterEncoding=UTF-8 --user-name=mysql --password=mysql --use-ccm=false --max-pool-size=25 --blocking-timeout-wait-millis=5000 --enabled=true
 


  WildFly容器可以这样启动:

1
2
3
 
docker run --name mywildfly -e MYSQL_HOST=<IP_ADDRESS> -e MYSQL_PORT=5306 -p 8080:8080 -d arungupta/wildfly-mysql-javaee7
 


  对这个方法的完整阐述参见在多个宿主之间使用Docker容器的linking技术


第7种Docker方法:使用Docker Swarm管理不同宿主上的两个容器

  Docker Swarm是Docker的原生集群管理工具。它将一群Docker宿主变为单一的虚拟宿主。通过优化宿主资源利用率,提供故障转移服务,它弥补了Docker Machine的不足。具体地说,Docker Swarm允许用户将运行着Docker守护进程的宿主组建为资源池,并在此之上调度Docker容器的运转,自动管理工作负载的分配,维护集群的状态。


  关于这个方法的更多详情将在后续博客中介绍。


第8种Docker方法:从Eclipse部署Java EE应用程序

  这个压轴方法将教你如何把已有的应用程序部署到一个Docker镜像中。


  假定你将JBoss Tools作为你的开发环境,WildFly用作你的应用服务器。

  


  这里提供两条途径来部署这些应用程序:


  1) 基于 Docker volumes + 本地 的部署方式:在你本地计算机上有一个目录,正以Docker Volume的形式挂载着。通过将这个目录映射到用于部署的目录,WildFly Docker容器被这样启动起来:

1
2
3
 
docker run -it -p 8080:8080 -v /Users/arungupta/tmp/deployments:/opt/jboss/wildfly/standalone/deployments/:rw jboss/wildfly
 


  通过设置JBoss Tools将WAR文件部署到这个目录中。

  2) 基于 WildFly管理API + 远程 的部署方式:启动WildFly Docker容器,此外还要开放管理端口9990:

1
2
3
 
docker run -it -p 8080:8080 -p 9990:9990 arungupta/wildfly-management
 


  通过设置JBoss Tools来使用远程的WildFly服务器,并利用管理API来进行部署。


  对这个方法的详细讲解在从Eclipse部署到WildFly和Docker上中可以找到。


第9种Docker方法:使用Arquillian Cube测试Java EE应用程序

  Arquillian Cube允许你以手动或自动的方式,在测试的生命周期中,控制Docker镜像的生命周期。Cube利用Docker REST API与容器通信。它使用远程适配器API同应用服务器通信,比如这里用到的WildFly。Docker参数是作为maven-surefire-plugin的一部分来配置的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<configuration>
    <systemPropertyVariables>
    <arquillian.launch>wildfly-docker</arquillian.launch>
    <arq.container.wildfly-docker.configuration.username>admin</arq.container.wildfly-docker.configuration.username>
    <arq.container.wildfly-docker.configuration.password>Admin#70365</arq.container.wildfly-docker.configuration.password>
    <arq.extension.docker.serverVersion>1.15</arq.extension.docker.serverVersion>
    <arq.extension.docker.serverUri>http://127.0.0.1:2375</arq.extension.docker.serverUri>
    <arq.extension.docker.dockerContainers>
        wildfly-docker:
            image: arungupta/javaee7-samples-wildfly
            exposedPorts: [8080/tcp, 9990/tcp]
            await:
                strategy: polling
                sleepPollingTime: 50000
                iterations: 5
            portBindings: [8080/tcp, 9990/tcp]
    </arq.extension.docker.dockerContainers>
    </systemPropertyVariables>
</configuration>

  关于这个方法的完整详情可以在使用Arquillian Cube在Docker上运行Java EE测试中找到。


  在Docker上部署你的Java EE应用程序时,你还用了什么其他方法吗?


  欢迎尝试这些方法!


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部