ホームページ >データベース >mysql チュートリアル >MySQL Docker コンテナーに接続するときに Node.js アプリで ECONNREFUSED エラーが発生するのはなぜですか?

MySQL Docker コンテナーに接続するときに Node.js アプリで ECONNREFUSED エラーが発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-11 00:01:03602ブラウズ

Why Does My Node.js App Get an ECONNREFUSED Error When Connecting to a MySQL Docker Container?

MySQL Docker コンテナへの Node.js 接続 ECONNREFused

問題:

MySQL と Node.js がリンクされた Docker compose ファイルコンテナーの場合、Node.js アプリはポート 3307 を使用して MySQL コンテナーに接続しようとしているときに ECONNREFUSED エラーが発生します。

分析:

Docker 構成ファイルは 3307 をマップします。ホストのポートをコンテナ内の 3306 に変更します。ただし、MySQL コンテナは内部的に 3306 をリッスンしています。これにより、Node.js がコンテナがリッスンしているポートではないホストのポート 3307 に接続しようとする問題が発生します。

解決策:

この問題を解決するには、MySQL 構成と Docker compose ファイルを次のように調整します:

変更済みMySQL 構成:

const config = {
    host: 'mysql',  // Use the MySQL container DNS name
    database: 'mydb',
    port: '3306',  // Match the port the MySQL container is listening on
    user: 'mysql',
    password: '1234',
    connectionLimit: 10
}

変更された Docker Compose ファイル:

command: ["/bin/bash", "./wait-for-it.sh", "mysql:3306"]  // Match the port MySQL is listening on

これらの変更を行うことで、Node.js アプリはMySQL コンテナは正しいポートを使用しており、ECONNREFUSED エラーは解決されるはずです。

以上がMySQL Docker コンテナーに接続するときに Node.js アプリで ECONNREFUSED エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。