V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pobing123
V2EX  ›  问与答

[docker]给 tomcat 添加 volume 问题

  •  
  •   pobing123 · 2021-03-01 18:30:20 +08:00 · 1364 次点击
    这是一个创建于 1398 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hi, 准备给 tomcat 的容器增加一个 volume 来持久化配置

    -v /root/cat9/conf/:/usr/local/tomcat/conf/
    

    无法正常生成容器

    换 docker-compose.yml

    version: '3.8'
    # docker compose 版本和 docker 对应
    services:
        arcesb:
         image: tomcat
            volumes:
             - /root/cat9/catconf/:/usr/local/tomcat/conf
            ports:
         - "10010:8080"
    

    也是无法运行容器。 非 java 开发者,请问有解决方案吗? 提前感谢

    是 tomcat 的原因吗?是运行前,此文件件还没生成?

    5 条回复    2021-03-02 22:53:11 +08:00
    lcdtyph
        1
    lcdtyph  
       2021-03-01 18:45:31 +08:00 via iPhone
    什么叫“无法正常生成容器”?

    是生成了但是启动就退出,还是生成了启动了但是 tomcat 运行不正常,还是 docker 指令就报错了

    如果报错了,报的是什么错?

    还有这个 compose 文件的缩进是不是不太对
    pobing123
        2
    pobing123  
    OP
       2021-03-02 08:44:13 +08:00
    @lcdtyph 感谢指正。
    确实报错情况没有描述清楚。

    ~~~bash
    docker run -d -v /root/cat9/conf/:/usr/local/tomcat/conf/ tomcat
    ~~~
    比如上述命令,可以生成容器,马上就退出。但是状态是
    Exited (1) 6 seconds ago
    使用
    ~~~
    docker run c307f17c5c00
    ~~~
    也是无法运行。

    compose 文件在运行前有校验过,可能拷贝格式有变化。
    当然,compose 里的命令的和 docker run 中也相同,给一个 volume 而已。
    Transbill
        3
    Transbill  
       2021-03-02 08:55:57 +08:00 via Android   ❤️ 1
    docker logs 看下日志吧
    pobing123
        4
    pobing123  
    OP
       2021-03-02 14:26:55 +08:00
    @Transbill 感谢提供思路
    ~~~bash
    WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]
    java.io.FileNotFoundException: /usr/local/tomcat/conf/server.xml (No such file or directory)
    ~~~
    应该是创建容器是,宿主机的 volume 是空的,导致容器内配置错误,启动不起来。


    所以,请问大家,容器里 tomcat 的配置相关设置如何在容器运行之时,就 volume 到宿主机了?

    目前采用的方法,是先不加 volume 的运行,然后 docker cp 容器内的 tomcat 文件到宿主机。
    然后关闭,再重新加上 volume 运行一遍。

    明显这样做不优雅,有其他的办法,或者其他命令吗?刚学 docker 不久,命令不是很溜。


    再次感谢楼上两位。
    Transbill
        5
    Transbill  
       2021-03-02 22:53:11 +08:00 via Android
    @pobing123 不行,本地目录是空的挂到容器里,容器里面 /usr/local/tomcat/conf/目录就是空的,肯定启动不了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:19 · PVG 07:19 · LAX 15:19 · JFK 18:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.