我有两个项目,我需要两个不同的docker environnement(容器)。我在两个不同的项目中有两个docker-compose.yml
个文件。 foo
项目和bar
项目。
foo/src/website/docker-compose.yml
#1(foo
)
version: '3'
services:
db:
env_file: .env
image: mariadb:10.0.23
container_name: foo-db
ports:
- "42333:3306"
restart: always
web:
image: project/foo
container_name: foo-web
env_file: .env
build: .
restart: always
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails server -p 3000 -b '0.0.0.0'"
volumes:
- .:/webapps/foo
ports:
- "3000:3000"
depends_on:
- db
bar/src/website/docker-compose.yml
#2(bar
)
version: '3'
services:
db:
image: mysql:5.5.50
container_name: bar-db
ports:
- "42333:3306"
env_file: .env
restart: always
web:
image: project/bar
container_name: bar-web
env_file: .env
build: .
restart: always
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails server -p 3000 -b '0.0.0.0'"
volumes:
- .:/webapps/bar
ports:
- "3000:3000"
depends_on:
- db
我为foo
项目docker-compose build
和docker-compose up
执行此命令,一切正常。在Kitematic中,我看到我的两个容器有好名字(foo-web
)。
docker-compose stop
。 bar
)并运行docker-compose build
和docker-compose up
。一切正常,但我的容器名称现在由bar-web
替换。 docker-compose stop
停止了我的第二张图片,并尝试再次在我的docker-compose up
项目文件夹中执行foo
,但它失败了。 如何保留两个不同的容器,并使用docker-compose stop
和docker-compose up
轻松地从一个容器切换到另一个?
我发现了问题,我的docker-compose.yml
所在的主文件夹中我的两个项目具有相同的文件夹名称。我可以修复此问题,还是需要重命名文件夹?
答案 0 :(得分:3)
是的,目录名是docker-compose
的默认项目名称:
$ docker-compose --help
...
-p, --project-name NAME Specify an alternate project name (default: directory name)
使用-p
参数指定特定的非默认项目名称。
或者,您也可以设置COMPOSE_PROJECT_NAME
环境变量(默认为项目目录的basename
)。
如果您要在包含多个撰写文件的文件和项目之间共享撰写配置,请参阅this链接以获取更多信息。
答案 1 :(得分:2)
我找到了解决方案
docker-compose -p projectname build
docker-compose -p projectname up
答案 2 :(得分:0)
您的问题来自端口。在定义公共端口时,每个容器都必须有自己的端口。因此,在第二个项目中,更改db和web的端口(例如42334和3001)。