Docker tomcat 编辑扩展的战争文件

Jac*_*son 5 java tomcat war docker

我正在使用 docker 部署一个运行第三方war文件的 tomcat 容器。

Dockerfile看起来像这样

FROM tomcat:7-jre8

ADD my.war ${CATALINA_HOME}/webapps/my.war 
Run Code Online (Sandbox Code Playgroud)

当我运行容器时,tomcat 会war在运行时扩展我的容器,我可以很高兴地在http://my.ip.addr:8080/mywar/.

但是我的问题是我想编辑war. 我真的不想解压缩并重新打包war文件,因为这看起来很混乱且难以维护。

我希望能够告诉 tomcat 将其扩展war为我的RUN步骤的一部分,然后用于ADD放入我的自定义文件,但我似乎找不到这样做的方法。战争只会在CMD执行时扩展,然后我无法编辑文件。

Joh*_*ham 5

我不确定您将如何使用 docker 或其他任何东西来实现它,因为我无论如何都看不到要求 tomcat 在战争实际开始之前扩大战争。但是按照标准做法,引爆战争并调整内容并不是一个好主意。它扼杀了发动战争的全部目的。

相反,您应该更改应用程序以从 << TOMCAT_HOME >>/conf 读取配置。

如果您实现了这一点,您唯一需要告诉 Docker 的是将您的配置文件添加到容器 tomcat conf 文件夹中。

或者,如果您必须篡改 war 文件,您可以这样做:在构建机器上手动(或通过脚本)分解 war,而不是直接将 war 添加到 docker 映像,而是映射文件夹。像这样的东西

添加 ./target/app-0.1.0.BUILD-SNAPSHOT /var/lib/jetty/webapps/ROOT。

然后手动将所有文件添加到所需的目的地。

添加 login.jsp /var/lib/jetty/webapps/ROOT/Webapps,依此类推。