【发布时间】:2016-10-06 23:57:18
【问题描述】:
我正在尝试将 .war、.aar、.xml 和 .properties 文件部署到 tomcat docker 容器。我在 Dockerfile 下面使用了基本的 tomcat docker 映像。
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 目录中现有的提取文件夹。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
一种更加程序化的方法是准备您的 java 应用程序,以便您可以使用 -D 标志或类似的东西指向配置所在的位置。然后,您可以在复制您的战争文件后将您的 -D 标志附加到 CATALINA_OPTS 变量
-
另一种方法是将属性构建到 jar 中,然后在启动服务器之前将其部署到 tomcat/lib。
-
感谢您的建议。但我需要通过在 docker 中使用上述场景来完成此操作。
-
你是如何最终解决这个问题的?我现在有确切的问题。部署geoserver war,然后需要访问
WEB-INF等,添加mysql db plugin等插件
标签: java tomcat docker dockerfile