首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker tomcat编辑扩展的war文件

Docker tomcat编辑扩展的war文件
EN

Stack Overflow用户
提问于 2015-06-10 15:36:49
回答 4查看 8.8K关注 0票数 7

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

我的Dockerfile看起来像这样

代码语言:javascript
复制
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放入我的自定义文件,但我似乎找不到这样做的方法。war只有在CMD执行时才会展开,之后我就无法编辑文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-10 17:00:08

我不知道你会如何与码头或其他任何事情实现它,因为我没有看到无论如何,要求猫只是扩大战争之前,它实际上开始。但按照标准做法,爆发战争和调整内容并不是个好主意。它扼杀了发动战争的全部目的。

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

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

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

ADD ./target/app-0.1.0.BUILD-快照/var/lib/jetty/webapp/ROOT。

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

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

票数 5
EN

Stack Overflow用户

发布于 2015-06-15 06:21:25

在启动tomcat之前,手动解压你的战争怎么样?

代码语言:javascript
复制
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"]
票数 4
EN

Stack Overflow用户

发布于 2015-06-10 16:55:19

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

例如:

代码语言:javascript
复制
RUN Start_tomcat.sh && \
    stop_tomcat.sh && \
    edit_1_config_file.sh && \
    edit_2_config_file.sh

注意:您需要在一次运行命令中执行所有步骤。因为Docker build将接受每个命令,并在从前面的命令和提交生成的映像上运行它。如果是服务,则取决于在上一次运行命令中启动的服务将无法工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30760989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档