1. ホーム
  2. networking

[解決済み] 複数のdocker-composeプロジェクト間の通信

2022-03-21 10:20:29

質問

私は、2つの別々の docker-compose.yml ファイルを2つの異なるフォルダーに保存しています。

  • ~/front/docker-compose.yml
  • ~/api/docker-compose.yml

のコンテナが front のコンテナにリクエストを送ることができます。 api ?

私が知っているのは --default-gateway オプションを設定することができます。 docker run を使用する場合、このコンテナに特定の IP アドレスを割り当てることができますが、このオプションは docker-compose .

現在、私は最終的に docker inspect my_api_container_id と出力されるゲートウェイを見てください。これはうまくいくのですが、問題はこのIPがランダムに帰属するため、当てにならないことです。

この質問の別の形は、このようになるかもしれません。

  • docker-compose を使用して、特定のコンテナに固定 IP アドレスを割り当てることはできますか?

でも、結局私が求めているのは

  • 2 つの異なる docker-compose プロジェクトが互いに通信するにはどうすればよいですか?

解決方法は?

互いに会話したいコンテナが同じネットワーク上にあることを確認すればよいのです。ネットワークは第一級のDocker構造であり、composeに固有のものではありません。

# front/docker-compose.yml
version: '2'
services:
  front:
    ...
    networks:
      - some-net
networks:
  some-net:
    driver: bridge

...

# api/docker-compose.yml
version: '2'
services:
  api:
    ...
    networks:
      - front_some-net
networks:
  front_some-net:
    external: true

注:アプリのネットワークは、「プロジェクト名」に基づいて名前が付けられます。これは、アプリが存在するディレクトリの名前に基づいており、この場合、プレフィックス front_ が追加されました。

そして、サービス名を使って互いに会話することができます。以下はその例です。 front を実行することができます。 ping api その逆も同様です。