sql >> データベース >  >> RDS >> Mysql

Spring Boot + docker-compose + MySQL:接続が拒否されました

    Docker composeは常に、依存関係の順序で、または指定されていない場合はファイル内の順序でコンテナーを開始および停止します。ただし、docker-composeは、依存関係コンテナーが実行されるまで待機することを保証しません。 参照 できます 詳細については、こちらをご覧ください。したがって、ここでの問題は、spring-mysqlのときにデータベースの準備ができていないことです。 コンテナはデータベースにアクセスしようとします。したがって、推奨される解決策は、を使用することです。 wait-for-it.sh またはspring-mysqlをラップする同様のスクリプト ENTRYPOINTを開始するアプリ 。

    例として、wait-for-it.shを使用する場合 ENTRYPOINT 上記のスクリプトをプロジェクトルートにコピーした後、Dockerfileの次のように変更する必要があります:

    ENTRYPOINT ["./wait-for-it.sh", "db:3306", "--", "java", "-jar", "app.jar"]
    

    そして、ここで考慮すべき他の2つの重要なことは次のとおりです。

    • 非推奨 のリンクは使用しないでください 代わりに、ユーザー定義のネットワークを使用する必要があります。ネットワークを明示的に定義しない場合、docker-composeファイル内のすべてのサービスは単一のユーザー定義ネットワークになります。したがって、作成ファイルからリンクを削除するだけです。
    • ユーザー定義のネットワーク内でのみ使用する場合は、Dockerコンテナのポートを公開する必要はありません。


    1. PostgreSQLのパフォーマンスをベンチマークする方法

    2. WHEREステートメントなしのINT比較

    3. MicrosoftAccessのアプリケーション用のVisualBasic

    4. MySQLで2つの列を比較する方法