この質問を重複としてマークする前に、他の回答を読みましたが、問題は解決しなかったことにご注意ください。
2 つのサービスを含む Docker compose ファイルがあります:
リーリー/web/Dockerfile:
リーリーdocker-compose up --build の後、サービスは開始されますが、mySQL の開始を待っている間に「wait-for-it.sh」スクリプトがタイムアウトします (そのため、一時的に使用しないでください) DB) 接続をテストするときは、MySQL が受信接続を受け入れる準備ができていることがコンソールに表示されるまで待ちます)
./mysql/migrations からサンプル レコードを取得できます。
ただし、私の Node.js アプリケーションは、接続時に
ECONNREFused 127.0.0.1:3307 を生成します。
リーリー
MySQL クエリ:リーリー
URL がクリックされたときに呼び出されるルート /リーリー
Node.js が失敗すると同時に、Sequel Pro または SSH を使用して実行中の Docker コンテナをクエリしてクエリできるため、これが競合状態である可能性は低いです。ということは、これは Node.js が MySQL コンテナにアクセスできないケースである可能性がありますか?リーリー
###これ:### リーリー
は、Docker がホストの
3307ポートをコンテナーの
ただし、これはコンテナが
33073306
ポートにマップすることを意味します。これで、Sequel から localhost:3307 にアクセスできるようになります。をリッスンしていることを意味するものではなく、実際には、コンテナは引き続き
したがって、ノード構成は次のようになります:
リーリー3306
をリッスンしています。他のコンテナがmysql
DNS にアクセスしようとすると、内部コンテナ IP に変換されるため、3306
に接続する必要があります。これは docker-compose.yml にあります:
リーリー注:
wait-for-it.shスクリプトのソース:
https://github.com/vishnubob/wait-for-it