【问题标题】:How to update war files in a docker tomcat container如何更新docker tomcat容器中的war文件
【发布时间】:2015-03-19 10:58:42
【问题描述】:

我已经开始浏览文档并开始了解 docker。使用官方的 tomcat:7-jre7 镜像创建了一个镜像,并在适当的位置放置了一个战争,它可以正常启动/停止。

我的参考文件是:

    FROM tomcat:7-jre7
    MAINTAINER: me, me@hotmail.com 
    ADD app.war /usr/local/tomcat/webapps
    EXPOSE 8080
    CMD ["catalina.sh", "run"]

现在这一切都很好,我有两个问题:

  1. 如果出现问题,我可以通过 ssh 登录并查看日志文件或其他内容吗?
  2. 如何更新war文件?有没有办法 ssh / scp 一个新文件?

到目前为止,我已经尝试通过以下方式启动原始图像:

   docker run -t <_id> /bin/bash 

然后在另一个会话中执行如下所示的附加操作,但这并没有起到多大作用 - 我看到的只是一个黑屏。

   docker attach <running_container_id> 

我想到的另一种方法(未经测试)是从主机共享文件-希望更新war文件会触发tomcat重新部署war文件?有人尝试过吗?

有没有更好更简单的方法来做到这一点?

感谢您的任何意见,不胜感激。

【问题讨论】:

  • 我认为这个想法是日志输出通过管道传输到主机(或 syslogd 或容器外部的其他东西),并且您通过重建 docker 映像来更新 WAR。
  • 啊,我明白了。所以一些停机时间然后服务正常进行?在我启动 docker 的原始会话中,我可以看到日志 - 所以我并不过分担心这一点,但更新内容很重要。
  • Re: downtime: 我认为这里的想法是在旧容器仍在运行时启动新容器,将 Web 代理指向新容器,然后关闭旧容器。跨度>
  • 对。感谢那。因此容器本身保持不可变,并且没有用户数据写入其中 - 或者安装一个卷并在那里写入,因此当容器关闭时,该卷保持持久并重新安装。更合适的方法是让应用程序联系某种数据库并在那里存储数据?然后像您提到的那样对代理进行更改?

标签: tomcat ssh docker war


【解决方案1】:

您有多种选择,具体取决于您想做什么。最简单的选择是让您构建的战争文件的文件夹也包含您上面的 Dockerfile。然后,每当更新 war 文件时,启动 docker build 和 docker run。这也可以使用 fig 轻松实现自动化,例如:

tomcat:
    build: ./war

现在只要在war文件更改时运行fig up,您的新容器就会从war文件夹中的Dockerfile构建并运行。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多