【问题标题】:Cant to run copy of service with volumes using docker-compose无法使用 docker-compose 运行带有卷的服务副本
【发布时间】: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


【解决方案1】:

我修改了.gitlab-ci.yml,现在项目在另一个路径中构建,所以卷有另一个前缀。

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 2020-03-30
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-05
    • 1970-01-01
    相关资源
    最近更新 更多