如何正确映射gentics/mesh Docker镜像的配置目录?
解决Gentics Mesh Docker容器配置目录为空的问题
这是Docker挂载空目录时的典型行为:当你挂载宿主机上的空目录到容器内的目录时,Docker会用宿主机的空目录覆盖容器内原本存在的配置文件目录,导致你看不到默认的配置文件。不过解决方法很简单,只需要先把容器内的默认配置文件复制到宿主机的配置目录即可。
步骤1:复制容器内的默认配置文件到宿主机
你有两种方式可以完成这个操作:
方式一:直接导出单个配置文件(适合只需要主配置文件的情况)
先确保宿主机配置目录存在,再把容器内的config.json导出到宿主机:
mkdir -p /tmp/mesh/conf docker run --rm gentics/mesh cat /mesh/conf/config.json > /tmp/mesh/conf/config.json
方式二:复制整个配置目录(如果有多个配置文件需要获取)
先启动一个临时容器,再将完整的配置目录复制出来:
mkdir -p /tmp/mesh/conf # 启动临时容器 docker run -d --name temp-mesh gentics/mesh # 复制容器内的配置目录到宿主机 docker cp temp-mesh:/mesh/conf/ /tmp/mesh/ # 停止并清理临时容器 docker stop temp-mesh && docker rm temp-mesh
步骤2:重新启动Gentics Mesh容器
现在你的/tmp/mesh/conf目录已经有了默认配置文件,再执行你原来的启动命令即可:
docker run -v /tmp/mesh/data:/mesh/data -v /tmp/mesh/conf:/mesh/conf -it -p 8080:8080 gentics/mesh
额外注意事项
- 一定要提前创建宿主机的
/tmp/mesh/conf目录,否则Docker会误把它创建成文件,导致挂载失败(上面的命令已经包含了mkdir -p来确保目录存在)。 - 修改宿主机配置目录下的文件后,需要重启容器才能让新配置生效:
docker restart <你的容器名称或ID>
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

