当你有两个独立的项目并且想让它们同时工作,或者至少在已经为另一个项目构建了图像时,在不使用--remove-orphans
标志的情况下构建运行docker-compose up -d
时,该如何处理孤儿镜像。
docker compose文件1:
version: '2'
services:
applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project1
nginx:
build: ./images/nginx
image: project1/nginx:latest
ports:
- "80:80"
volumes_from:
- applications
networks:
appnet:
aliases:
- project1.app
- admin.project1.app
php:
image: project1/php:latest
ports:
- "7778:7778"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- applications
networks:
- appnet
mysql:
image: project1/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- mysqldata:/var/lib/mysql
networks:
- appnet
ports:
- "33066:3306"
workspace:
image: project1/workspace:latest
build:
context: ./images/workspace
volumes_from:
- applications
working_dir: /var/www/vhosts/project1
networks:
- appnet
networks:
appnet:
driver: "bridge"
volumes:
mysqldata:
driver: "local"
第二个Docker Compose文件:version: '2'
services:
project2_applications:
image: tianon/true
volumes:
- ../../:/var/www/vhosts/project2
project2_nginx:
build: ./images/nginx
image: project2/nginx:latest
ports:
- "8080:80"
volumes_from:
- project2_applications
networks:
project2_appnet:
aliases:
- project2.app
- admin.project2.app
project2_php:
image: project2/php:latest
ports:
- "7777:7777"
build:
context: ./images/php
dockerfile: Dockerfile
volumes_from:
- project2_applications
networks:
- project2_appnet
project2_mysql:
image: project2/mysql:latest
build: ./images/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- project2_mysqldata:/var/lib/mysql
networks:
- project2_appnet
ports:
- "33067:3306"
project2_workspace:
image: project2/workspace:latest
build:
context: ./images/workspace
volumes_from:
- project2_applications
working_dir: /var/www/vhosts/videosite
networks:
- project2_appnet
networks:
project2_appnet:
driver: "bridge"
volumes:
project2_mysqldata:
driver: "local"
现在,我已经建立了 project1并正试图运行 docker-compose up -d
来启动第二个项目,但是我看到了一个警告:
警告:发现孤立的容器(docker_workspace_1、docker_nginx_1、docker_php_1、docker_mysql_1、docker_memcached_1),适用于此项目。如果您在组合文件中删除或重命名此服务,则可以使用
--remove-orphans
标志运行此命令以清理它。
我有一个猜测,这是因为 project1 的容器名称应该更具体,并且我需要添加一些前缀,就像我为 project2 所做的那样,但是 project1正在被许多其他开发人员使用,我不想更改它。
有没有办法关闭孤立检查?
第二件事:这只是一个警告消息,但由于某种原因,在它出现后,组合失败并显示错误:
错误:在启动项目时遇到错误。
为了使其工作,我需要运行 docker-compose up -d --remove-orphans
。