执行多个相互封装的“docker compose run”

执行多个相互封装的“docker compose run”,docker,docker-compose,Docker,Docker Compose,我有一个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管道中运行它,通过doc

我有一个
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
  • 执行命令时添加
    --name
    标志。i、 e.
    docker compose run——名称id1 app run-test-1.sh

    • 设法解决了这个问题
      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——项目名称project1运行应用程序。/run-test1.sh
      • docker compose——项目名称project2运行应用程序。/run-test2.sh
      • docker compose——项目名称project3运行应用程序。/run-test3.sh