如何在Docker容器中热部署Java EE应用程序

我正在寻找将Java EE应用程序热部署到Docker容器中的可能性.

我发现最有趣的内容是通过“卷”共享主机和容器之间的tomcat目录的可能性.但它还不是一个热门的部署.

参考:https://groups.google.com/forum/#!topic/docker-user/b_4NRn9sLBQ

有关如何达到它的任何建议?

最佳答案
我知道这个问题有点老了,但我想分享一下如何用Docker中的tomee服务器开发java EE应用程序.

准备Docker镜像

首先要做的是启用日志记录.我使用官方基本映像并将日志重定向到stdout以便在我的控制台上查看它:

# you can change the base image of course
FROM tomee:8-jre-1.7.5-jaxrs
RUN ln -s /dev/stdout /usr/local/tomee/logs/catalina.out 
RUN echo '

添加日志可能看起来不是什么大不了的事,但确实如此.启用此功能后,您可以立即查看部署的成功(或失败).
丑陋的xml片段实际上非常重要.它使名为tomee的用户能够使用所有重要权限来部署应用程序.

您可以使用普通的docker工具构建图像:

docker build -t tomee-dev .

准备开发环境

我使用标准的maven目录布局.这是一个例子:

pom.xml
src
 |
 - main
    |
    - java
    |   |
    |   - boundary
    |        |
    |        - TestResource.java
    - webapp
        |
        - WEB-INF
            |
            - web.xml

这些文件内容可以在这个答案的底部找到.

像这样启动容器:

docker run -it --rm -p 8080:8080 tomee-dev

最后一块拼图是我们的maven配置.您可以使用tomee maven插件进行重新部署

您现在可以使用mvn clean tomcat7:deploy和mvn clean tomcat7:redeploy命令来部署/重新部署您的应用程序.

附录

这是我在示例中使用的源文件配置文件内容

的src /主/爪哇/边界/ TestResource.java

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("/")
public class TestResource {

    @GET
    @Path("test")
    public Response test1() {
        return Response.ok("this is a test").build();
    }
}

的src /主/ JAVA / web应用/ WEB-INF / web.xml中

的pom.xml

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...