MySQL Docker コンテナへの接続中に Node.js ECONNREFused が発生します
MySQL コンテナと Node.js Web サービスを含む Docker Compose セットアップ内、Docker リンクが確立され、データベース設定が適切に構成されているにもかかわらず、Node.js から MySQL に接続すると ECONNREFUSED エラーが発生しました。
問題の説明
問題の原因は次のとおりです。 Dockerポートマッピングの誤解。 Docker 構成ファイル内:
これにより、ホスト ポート 3307 がコンテナ ポート 3306 にマップされます。これにより、ホストから MySQL コンテナのデータベースへの外部アクセスが許可されますが、コンテナの内部ポートは変更されません。
解決策
問題を解決するために、Node.js 構成と Docker コマンドが調整されました:
Node.js構成
Docker コマンド
説明
Docker サービス名 ( mysql) を Node.js 構成のホストとして使用すると、ホストではなくコンテナーに対して接続が試行されるようになります。さらに、wait-for-it スクリプト引数を 3306 に変更することで、コンテナ内のネイティブ ポートで MySQL の準備が整うまで待機します。
これらの変更が実装されると、ECONNREFUSED エラーは解決され、 Node.js アプリケーションは MySQL Docker コンテナに正常に接続できました。
以上がNode.js アプリケーションから MySQL コンテナに接続すると ECONNREFused が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。