在多个docker compose中共享容器定义

在多个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代理

在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。在这种情况下,您只需要有_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
关键字