多个 docker-compose 文件组网

1 场景举例

我有一个 nginx 的 docker-compose.yml,又有一个 webapp 的 docker-compose.yml。

由于某种原因,不能把它们放到同一个 docker-compose.yml 文件中,又希望可以用 nginx 对 webapp 进行反向代理(它们需要在同一个网络中,nginx 要能访问到 webapp)。

2 方案

nginx 的 docker-compose.yml

(一定要 3.5 版本)

version: "3.5"
services:
  my-nginx:
    image: nginx
    ports:
      - "80:80"
    networks:
      - nginx-net

networks:
  nginx-net:
    name: nginx_network

webapp 的 docker-compose.yml

version: "2"
services:
  webapp:
    image: myapp
    networks:
      - nginx-net
networks:
  nginx-net:
    external:
      name: nginx_network

启动之后,可以用 docker network ls 和 docker network inspect 命令查看网络状态。

3 原理浅释

nginx 创建了名为 nginx_network 的网络,webapp 加入了它。

ref:https://stackoverflow.com/questions/38088279/communication-between-multiple-docker-compose-projects