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

Osc*_*lli 5 docker docker-compose

在我的docker-compose中有一个nginx代理容器定义:

nginx-proxy:
  image: jwilder/nginx-proxy
  ports:
    - "80:80"
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
Run Code Online (Sandbox Code Playgroud)

我想在多个docker-compose.yml文件中定义此容器(每个项目一个).

我怎么能这样做,而不是每次都停止容器(因为使用端口80)?这个想法是:如果没有nginx-proxy容器在运行,请运行它,否则使用正在运行的容器.

小智 -1

您可以为所有项目使用一个 nginx。在这种情况下,您需要有 only_nginx/docker-compose.yml 文件,其中您有 ] nginx 服务并使用

projectx_service:
    extends:
        file: /path_to/only_nginx/docker-compose.yml
        service: nginx-proxy
    ...
Run Code Online (Sandbox Code Playgroud)

您的每个项目 docker-compose 文件中都有这种块。

例子:

only_nginx/docker-compose.yml

nginx-proxy:
image: jwilder/nginx-proxy
ports:
    - "80:80"
volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro    
Run Code Online (Sandbox Code Playgroud)

项目1/docker-compose.yml

project1_service:
    extends:
        file: /path_to/only_nginx/docker-compose.yml
        service: nginx-proxy
    ...
Run Code Online (Sandbox Code Playgroud)

项目2/docker-compose.yml

project2_service:
    extends:
        file: /path_to/only_nginx/docker-compose.yml
        service: nginx-proxy
    ...
Run Code Online (Sandbox Code Playgroud)