执行多个相互封装的“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
- 执行命令时添加
标志。i、 e.--name
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