【发布时间】:2020-11-23 12:28:45
【问题描述】:
我有一个包含在多个本地项目中的包 (bootstrap)。示例:
project1/:
src/...
tests/...
vendor/bootstrap/...
project2/:
src/...
tests/...
vendor/bootstrap/...
这个包有它的内部测试和静态代码分析器,我想在每个projectX/vendor/bootstrap 文件夹中运行它们。测试和分析器从 docker 容器运行。 IE。 bootstrap 有 docker-compose.yml 和一些配置:
version: '3.7'
services:
cli:
build: docker/cli
working_dir: /app
volumes:
- ./:/app
tty: true
问题是当我在project1/vendor/bootstrap 中运行一些东西,然后切换到project2/vendor/bootstrap 并在那里运行一些东西时,docker 认为我从 project1 执行容器。我相信这是因为与 Docker Compose 相同的文件夹名称生成容器名称为[folder-name_service-name]。因此,当我运行docker-compose exec cli sh 时,它会检查是否有一个正在运行的容器bootstrap_cli,但它可以在另一个项目的另一个bootstrap 文件夹中创建。
docker ps 示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
128c3e834df4 bootstrap_cli "docker-php-entrypoi…" 55 minutes ago Up 55 minutes bootstrap_cli
NAMES 对于所有这些 projectX 文件夹中的容器都是相同的。
有一个选项可以添加container_name: bootstrap_project1_cli,但似乎 Docker Compose 在搜索正在运行的容器时会忽略它。
那么是否可以区分同名容器并同时拥有所有容器?
【问题讨论】:
标签: docker docker-compose