小さなエンドウ豆

まだまだいろいろ勉強中

複数 docker-compose 間でネットワークを共有する方法

複数 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 などで指定してあげると良いかも。