我正在尝试将.war,.aar,.xml和.properties文件部署到tomcat docker容器。我在底部tomcat docker镜像下面使用了Dockerfile。
FROM tomcat:7
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY test-3.0.war /usr/local/tomcat/webapps/ROOT.war
COPY testone-3.0.aar /usr/local/tomcat/webapps/axis2/WEB-INF/services/
COPY ./conf/context.xml /usr/local/tomcat/conf/
COPY ./conf/server.xml /usr/local/tomcat/conf/
CMD ["catalina.sh", "run"]
到目前为止,一切都按预期工作。它提取war文件并在容器内启动应用程序。
但现在我需要在“/ usr / local / tomcat / webapps / ROOT / WEB-INF / classes /”和“/ usr / local / tomcat / webapps / ROOT / js”中添加/编辑一些属性文件“喜欢这个。
COPY ./conf/applicationurl.properties /usr/local/tomcat/webapps/ROOT/WEBINF/classes/
COPY ./conf/memcache.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/um.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/pe.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/
COPY ./conf/check.js /usr/local/tomcat/webapps/ROOT/js
将这些文件复制到正在运行的tomcat容器中的最佳方法是什么?我尝试使用上面的Dockerfile构建一个docker镜像作为基本图像,并将上述文件复制到容器内的目标文件夹中,但它删除了所有提取的war文件夹/文件,它只复制了/ usr / local / tomcat中的文件/ webapps目录。
我只需要添加一些属性文件,它不应该删除webapps目录中现有的解压缩文件夹。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
另一种选择是仅解压缩war
文件(您可以重命名为zip,因为它确实是一个zip文件)。
所以:
我正在通过war
脚本来操纵DockerFile
。就我而言,它部署了Geoserver
+将插件添加jars
到/WEB-INF/lib
简而言之,解压缩如下:
unzip geoserver-2.10.2.war -d geoserver_war/
希望能帮到某人
答案 1 :(得分:0)
可以使用post脚本解决,该脚本可以使用nohup调用,然后调用tomcat run。
postscript.sh有post操作 - 将复制命令列表移动到postscript.sh在复制命令之前,在脚本中包含一些等待逻辑,等待tomcat启动。 (它可以只是休眠几秒钟甚至grep tomcat日志来搜索服务器启动)
#postscript.sh
sleep 1000
copy commands
创建一个使用nohup调用post脚本的启动脚本,然后调用tomcat run
#start.sh
nohup postscript.sh & catalina.sh run
然后更改CMD以在dockerfile中运行start.sh。同时将postscript.sh和start.sh文件复制到容器中的某个位置(例如/ tmp)。
#....other contents
COPY start.sh /tmp/start.sh
COPY postscript.sh /tmp/postscript.sh
CMD ["/tmp/start.sh"]
希望这会有所帮助。