[docker]给 tomcat 添加 volume 问题

2021-03-01 18:30:20 +08:00
 pobing123

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 的原因吗?是运行前,此文件件还没生成?

1352 次点击
所在节点    问与答
5 条回复
lcdtyph
2021-03-01 18:45:31 +08:00
什么叫“无法正常生成容器”?

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

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

还有这个 compose 文件的缩进是不是不太对
pobing123
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
2021-03-02 08:55:57 +08:00
docker logs 看下日志吧
pobing123
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
2021-03-02 22:53:11 +08:00
@pobing123 不行,本地目录是空的挂到容器里,容器里面 /usr/local/tomcat/conf/目录就是空的,肯定启动不了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/757389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX