tomcat - 用于开发和生产的 Docker

标签 tomcat docker docker-compose dockerfile jrebel

我有一个类似于这个的Dockerfile:

FROM tomcat:7-jre8-alpine
...
ENTRYPOINT ["sh", "docker-entrypoint.sh"]

我希望在完成所有测试和开发后能够在生产中使用它。在开发过程中,我想使用 JRebel 并激活调试,最好不要更改 Dockerfile 或需要一个额外的文件。 To use JRebel不幸的是,jrebel.jar 需要成为容器/图像的一部分,并且 JAVA_OPTS 需要增强:

"-javaagent:/jrebel.jar -Drebel.remoting_plugin=true"

还必须启用 tomcat 调试:

"-agentlib:jdwp=transport=dt_socket, address=1043, server=y, suspend=n"

是否可以有一个 Dockerfile 然后通过运行选项或类似的东西启用我需要的开发选项?拥有可用于在开发期间运行容器的“高效”docker 镜像的可行选择是什么?

最佳答案

then via run options or something like that enable the development options I need?

作为一个可能的“运行选项”,您可以使用您在 docker run command 上定义的环境变量(或 docker-compose 'environment' directive )。

 docker run -e "env=dev" ...

然后你可以让你的图像使用一个脚本来适应 JAVA_OPTS 或 tomcat 选项,这取决于 $ENV

如果 $ENV 未定义,或已定义但不等于“dev”,则您不会激活调试选项。

关于tomcat - 用于开发和生产的 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39389070/

相关文章:

docker - Docker登录失败并显示400错误请求,对于Docker 18.09.7版,内部版本2d0083d

docker - 标准_init_linux.go :211: exec user process caused "no such file or directory"

docker - 错误层=rpc 写入响应 :write tcp 127. 0.0.1 :40000->127. 0.0.1:41558:使用关闭的网络连接

Java 反射不工作并获取 java.lang.NoSuchMethodException

Tomcat - 如何指定可以在 server.xml 中扩展的属性

java - 使用 Liferay 6.1 在 Tomcat 7 环境中设置 JNDI

docker - 无法将 docker url 与 PHP 单元连接

tomcat - 同时使用 SSL 和未加密运行 Spring Boot 应用程序(嵌入式 Tomcat)

docker - 简单的 flask 服务在 docker 容器外不响应

git - 如何从Jenkins多分支管道进行Git和Docker标记