【发布时间】:2019-12-27 15:55:42
【问题描述】:
我有 docker-compose with volume:
volumes:
code:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: $PWD
services:
# .. Some services
我使用 gitlab-runner 运行它。服务完美。
但现在我需要在同一台服务器上运行服务副本。
我已经为它创建了单独的 gitlab 运行器。当我尝试部署服务副本时,出现下一个错误:
18 $ docker-compose up -d --build
19 卷代码的配置指定“设备” driver_opt /home/gitlab-runner/builds/MevxfSHX/0/semast/sa-parser,但是同名的卷使用不同的“设备” driver_opt (/home/gitlab-runner /builds/BWs7_SoK/0/semast/sa-parser)。如果您希望使用新配置,请先删除现有卷“sa-parser_code”:
20 $ docker 卷 rm sa-parser_code
24 错误:作业失败:退出状态 1
似乎是卷名冲突。我需要做什么来运行服务副本?
【问题讨论】:
-
您可以删除卷声明并只运行嵌入到映像中的代码吗?无论如何,这通常是更好的做法;运行 Docker 的原因之一是镜像是自包含的,您不需要单独复制运行时和应用程序代码。
-
我使用这个卷在 php 和 nginx 容器之间共享代码,所以我不能删除它。而且我不在服务中使用匿名卷(如
.:/var/www/html),因为它会导致另一个问题,即在部署过程中“粘住”卷。是否存在将这些卷部署在不同命名空间中的任何方式?
标签: docker docker-compose gitlab-ci-runner docker-volume