我正在寻找将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