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 サイトの他の関連記事を参照してください。