在多个docker compose中共享容器定义
在my docker compose中,有一个nginx代理容器定义:在多个docker compose中共享容器定义,docker,docker-compose,Docker,Docker Compose,在my docker compose中,有一个nginx代理容器定义: nginx-proxy: image: jwilder/nginx-proxy ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro 我想在多个docker-compose.yml文件中定义这个容器(每个项目一个) 我如何做到这一点,而不是每次停止容器(因为正在使用端口80)?其思想是:如果没有运行nginx代理
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
我想在多个docker-compose.yml文件中定义这个容器(每个项目一个)
我如何做到这一点,而不是每次停止容器(因为正在使用端口80)?其思想是:如果没有运行
nginx代理
容器,请运行该容器,否则请使用正在运行的容器。您可以为所有项目使用一个nginx。在这种情况下,您只需要有_nginx/docker-compose.yml文件,其中有]nginx服务并使用
projectx_service:
extends:
file: /path_to/only_nginx/docker-compose.yml
service: nginx-proxy
...
这类块在您的每个项目中都由docker编写文件
例如:
仅\u nginx/docker compose.yml:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
project1/docker compose.yml
project1_service:
extends:
file: /path_to/only_nginx/docker-compose.yml
service: nginx-proxy
...
project2_service:
extends:
file: /path_to/only_nginx/docker-compose.yml
service: nginx-proxy
...
project2/docker compose.yml
project1_service:
extends:
file: /path_to/only_nginx/docker-compose.yml
service: nginx-proxy
...
project2_service:
extends:
file: /path_to/only_nginx/docker-compose.yml
service: nginx-proxy
...
您正在使用Compose v2规范吗?是的。。。[正在编写无用的字符]…我想你需要一个脚本。类似于:使用端口80 ping或检查nginx,如果没有打开,请运行docker compose运行nginx proxy创建一个。嗨!这个问题的答案是什么?你应该使用这个解决方案,它不能解决原来的问题,而只是避免代码的重复。如果我在两个项目上都运行
docker compose up
,第一个可以,第二个总是告诉我“…绑定0.0.0.0:80失败:端口已分配”。此外,Docker Compose v3中不推荐使用extends
关键字