【问题标题】:Execute multiple `docker-compose run` that are encapsulated from of each other执行多个相互封装的 `docker-compose run`
【发布时间】:2020-01-18 18:29:24
【问题描述】:

我有一个docker-compose 文件,如下所示:

  mongo:
    image: mongo:3.6.12
    container_name: mongo-${BUILD_ID}
  app:
    image: repo/my-image:latest
    container_name: app-${BUILD_ID}
    working_dir: /src
    depends_on:
      - mongo

我在 CI/CD 管道中运行它以通过 docker-compose run app run-test-1.sh 并行执行测试,但注意到只创建了一个 mongo 容器实例。这似乎导致测试相互干扰。是否有可能docker-compose run 这样它将同时创建app 服务和mongo 服务并从其他docker-compose run 容器中封装,以便它们每个都有自己的mongo 实例?

我尝试了以下方法无济于事:

  • docker-compose.yml 中添加container_name: mongo-${BUILD_ID} 属性
  • 在执行命令时添加--name 标志。即docker-compose run --name id1 app run-test-1.sh

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    设法解决了这个问题。 docker-compose 有一个标志 --project-name,它将使用它来代替默认值(文件夹名称)。

    因此我的docker-compose.yml 看起来像:

      mongo:
        image: mongo:3.6.12
      app:
        image: repo/my-image:latest
        working_dir: /src
        depends_on:
          - mongo
    

    我可以执行以下命令,每个命令都将在各自的项目名称中命名:

    • docker-compose --project-name project1 run app ./run-test1.sh
    • docker-compose --project-name project2 run app ./run-test2.sh
    • docker-compose --project-name project3 run app ./run-test3.sh

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      相关资源
      最近更新 更多