【发布时间】: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"]
现在这一切都很好,我有两个问题:
- 如果出现问题,我可以通过 ssh 登录并查看日志文件或其他内容吗?
- 如何更新war文件?有没有办法 ssh / scp 一个新文件?
到目前为止,我已经尝试通过以下方式启动原始图像:
docker run -t <_id> /bin/bash
然后在另一个会话中执行如下所示的附加操作,但这并没有起到多大作用 - 我看到的只是一个黑屏。
docker attach <running_container_id>
我想到的另一种方法(未经测试)是从主机共享文件-希望更新war文件会触发tomcat重新部署war文件?有人尝试过吗?
有没有更好更简单的方法来做到这一点?
感谢您的任何意见,不胜感激。
【问题讨论】:
-
我认为这个想法是日志输出通过管道传输到主机(或 syslogd 或容器外部的其他东西),并且您通过重建 docker 映像来更新 WAR。
-
啊,我明白了。所以一些停机时间然后服务正常进行?在我启动 docker 的原始会话中,我可以看到日志 - 所以我并不过分担心这一点,但更新内容很重要。
-
Re: downtime: 我认为这里的想法是在旧容器仍在运行时启动新容器,将 Web 代理指向新容器,然后关闭旧容器。跨度>
-
对。感谢那。因此容器本身保持不可变,并且没有用户数据写入其中 - 或者安装一个卷并在那里写入,因此当容器关闭时,该卷保持持久并重新安装。更合适的方法是让应用程序联系某种数据库并在那里存储数据?然后像您提到的那样对代理进行更改?