複数 docker-compose 間でネットワークを共有する方法
方法としては世の中に出回っているがちょっとつまずいたのでメモ程度にまとめる。
用途としてはサーバーとフロントエンドの環境をそれぞれ docker-compose で組み立てたがその動作確認がしたいときなどに使える。
手順
1. docker network 作成
# 作成 $ docker network create my_network # 確認 docker network ls 709b835bca33 my_network bridge local
2. docker-compose.yml でネットワークを指定
docker-compose.yml その1
version: '3' services: app: container_name: app build: context: ./ dockerfile: ./Dockerfile volumes: - ./:/app - /node_modules/ ports: - 3333:3333 environment: - HOST=0.0.0.0 command: yarn dev networks: - my_network networks: my_network: external: true
yaml ファイルのトップレベルに networks
を指定してあげる。
こうすることによって先程作成してネットワークを使用することができる。
また service にも network を指定しなければならないため記述。(実はここが抜けてて時間を無駄にした…)
この記述を別の docker-compose.yml に記述するとネットワークを共有することができる。
この場合他のコンテナにアクセスする際は host 名がコンテナ名になるため、予め container_name などで指定してあげると良いかも。