docker-composeを介した2つのドッカーコンテナの接続

docker-composeを介した2つのドッカーコンテナの接続

あるコンテナにデプロイされたWebアプリケーションを別のコンテナにデプロイされたRabbitmqに接続しようとしています。

docker-composeを使用してRabbitMQコンテナへの接続を使用して、次のdocker-composeを作成しました。

version: '3'

services:
 webapp:
    container_name: chat
    build:
      context: .
    depends_on:
      - broker
    ports:
      - "8080:8080"

broker:
   container_name: rabbit_chat
   image: rabbitmq
   command: rabbitmq-server
   expose:
     - 5672
     - 15672
   healthcheck:
     test: ["CMD", "curl", "-f", "http://broker:5672"]
     interval: 30s
     timeout: 10s
     retries: 5

webappは、次のRabbitmq属性を指定したWebアプリケーション用のサービスです。

host = broker
port = 15672
login = guest
password = guest

このドキュメントでは、デフォルトのネットワーク接続コンテナにdocker-composeのサービス名を使用することをお勧めしますので、「broker」をホストとして選択しました。

これはうまくいきません。また、接続ホストとして「localhost」を使ってみました。

また、出力に表示される「rabbit_chat」コンテナも確認します。

  "Log": [
            {
                "Start": "2020-04-11T14:54:25.0988242Z",
                "End": "2020-04-11T14:54:25.2920557Z",
                "ExitCode": -1,
                "Output": "OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused \"exec: \\\"curl\\\": executable file not found in $PATH\": unknown"
            }

ベストアンサー1

試してみてくださいネットワーク:

services:
  webapp:
    ...
    networks:
    - mynetwork

 broker:
   ...
    networks:
    - mynetwork

networks:
  mynetwork:

また、内部DNSを設定するので、実際にそれをbrokerホスト名として使用してwebapp他のコンテナを参照できます。

おすすめ記事