Docker tomcat编辑扩展的war文件



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

我的Dockerfile看起来像这样

FROM tomcat:7-jre8
ADD my.war ${CATALINA_HOME}/webapps/my.war 

当我运行容器tomcat扩展我的war在运行时,我可以愉快地访问我的应用程序在http://my.ip.addr:8080/mywar/

然而,我的问题是,我想编辑war内的几个配置文件。我真的不想解包和重新打包war文件,因为这看起来很乱,很难维护。

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

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

相反,你应该修改应用程序,从<<TOMCAT_HOME>>/conf .

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

或者如果你必须修改war文件,你可以这样做:在构建机器上手动(或通过脚本)爆发war,而不是直接将war添加到docker映像中,而是映射文件夹。像这样

ADD。/目标/app-0.1.0。BUILD-SNAPSHOT/var/lib/jetty/webapps/ROOT .

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

添加login.jsp/var/lib/jetty/webapps/ROOT/Webapps,等等。

在启动tomcat之前,如何手动解压缩war ?

ADD my.war /tmp/my.war 
RUN unzip /tmp/my.war -d /usr/local/tomcat/webapps/mywar
# Edit config files
# Now you can start tomcat...
CMD ["catalina.sh", "run"]

可以使用Run命令启动tomcat容器,然后立即停止它。这将导致战争被扩展,然后你可以继续修改配置文件。

,

RUN Start_tomcat.sh && 
    stop_tomcat.sh && 
    edit_1_config_file.sh && 
    edit_2_config_file.sh

注意:您需要在一个运行命令中执行所有步骤。由于Docker构建将接受每个命令,并在由前一个命令生成的映像上运行它并提交。对于服务,依赖于在前面的RUN命令中已经启动的服务将不起作用。

只需添加一个RUN指令,在后台启动服务器,给它几秒钟然后退出,即

RUN bash -c "catalina.sh start; sleep 5; catalina.sh stop;"

您需要给它足够长的时间来展开war文件

最新更新