Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker tomcat容器中更新war文件_Tomcat_Ssh_Docker_War - Fatal编程技术网

如何在docker tomcat容器中更新war文件

如何在docker tomcat容器中更新war文件,tomcat,ssh,docker,war,Tomcat,Ssh,Docker,War,我已经开始浏览文档,开始了解docker。使用官方的tomcat:7-jre7映像创建了一个映像,并在适当的位置粘贴了一个war,它可以正常启动/停止 我的参考文件是: FROM tomcat:7-jre7 MAINTAINER: me, me@hotmail.com ADD app.war /usr/local/tomcat/webapps EXPOSE 8080 CMD ["catalina.sh", "run"] 好了,我有两个问题: 如果出现不

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

我的参考文件是:

    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运行-t/bin/bash
    
    然后在另一个会议上做了下面的附加,但那没什么作用——我看到的只是一个黑屏

       docker attach <running_container_id> 
    
    docker连接
    
    我想到的另一种方法(未经测试)是从主机共享文件——希望更新war文件会触发tomcat重新部署war文件?有人尝试过这个吗

    有没有更好更简单的方法


    感谢您的宝贵意见,非常感谢。

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

    tomcat:
        build: ./war
    

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

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