ホームページ  >  に質問  >  本文

Docker は同じネットワーク内でアプリケーションを接続できません

私には docker compose ファイルが 1 つあります。以下に示すように:

バージョン: "3.9"
サービス:
  mysqldb:
    画像: mysql:5.7
    コンテナ名: mysqlコンテナ
    コマンド: --default-authentication-plugin=mysql_native_password
    ボリューム:
      - ./db/init.sql:/docker-entrypoint-initdb.d/0_init.sql
    ポート:
      - 3306:3306
    さらす:
      - 3306
    環境:
      MYSQL_DATABASE: "todos"
      MYSQL_USER: "管理者"
      MYSQL_PASSWORD: "パスワード"
      MYSQL_ROOT_PASSWORD: "パスワード"
      SERVICE_TAGS: 開発
      SERVICE_NAME: mysqldb
    再起動: 失敗時
    ネットワーク:
      - 内部ネット
  エクスプレスアプリ:
    コンテナ名: API
    建てる: 。
    画像: Expressapp:1.0
    ポート:
      - 「3001:3001」
    さらす:
      - 「3001」
    環境:
      DB_HOST: mysqldb
      DB_ポート: 3306
      DB_USER: "管理者"
      DB_PASSWORD: "パスワード"
      DB_NAME: やるべきこと
      DB_CONNECTION_LIMIT: 20
      SERVICE_TAGS: 開発
      SERVICE_NAME: エクスプレスアプリ
      ポート: 3001
    依存:
      -mysqldb
    ネットワーク:
      - 内部ネット
ネットワーク:
  内部ネット:
    ドライバー:ブリッジ
ボリューム:
  データベース:

結果、docker compose up -d コマンド実行コンテナを使用し、ps コマンド実行中のコンテナを使用すると、次の出力が得られます。

コンテナ ID イメージ コマンドによって作成されたステータス ポート名 9f338b733a1c Expressapp:1.0 "docker-entrypoint.s…" 2 分前 2 分前 0.0.0.0:3001->3001/tcp api edef8027dc0a mysql:5.7 "docker-entrypoint.s…" 2 分前 2 分上昇 0.0.0.0:3306->3306/tcp, 33060/tcp mysqlcontainer
ただし是当我尝试向サービス务器発行 

API 请要求時,我收到以下错误メッセージ:

「リクエストの処理中にエラーが発生しました: ECONNREFused 172.24.0.2:3306 に接続します」
DB_HOST

の量は mysql サービス名に設定されていますか?

P粉627136450P粉627136450235日前315

全員に返信(1)返信します

  • P粉293550575

    P粉2935505752024-02-27 19:47:11

    この問題は、mysql がクエリに使用できるようになる前に expressapp が開始されるために発生する可能性があります。

    サービスの起動順序を制御するには、healthcheckmysqldb サービスに追加します。 ###健康診断: テスト: mysql ${MYSQL_DATABASE} --user=${MYSQL_USER} --password='${MYSQL_PASSWORD}' --silent --execute "SELECT 1;" 間隔: 30秒 タイムアウト: 10秒 再試行: 5

     および 
    depends_on

    ブロックから expressapp 依存: mysqldb: 条件: service_healthy

    完全な例を表示
    ここで

    これについて詳しくは、この

    answer

    を参照してください。

    返事
    0
  • キャンセル返事