ホームページ  >  に質問  >  本文

springboot アプリケーションが docker 上で実行されている SQL データベースとの接続を確立できません

<p>Springboot インスタンスとして intellij を使用して localhost でプロジェクトを実行していますが、Xampp の SQL を問題なく使用しています。これは非常にうまく機能します。しかし、今はすべてを docker にデプロイしたいと考えています。そこで、次のように dockerfile と docker-compose up ファイルをディレクトリに作成しました。 <pre class="brush:php;toolbar:false;">-アプリケーション | - フロントエンド (Docker にはまだ実装されていません) -バックエンド(springAPI) | -dockerfile -Python (flaskAPI) (Docker にはまだ実装されていません) docker-compose.yml <p>docker-compose.yml は次のようになります: </p> <pre class="brush:php;toolbar:false;">バージョン: '3.9' サービス: データベース: 画像: mysql:最新 再起動: 常に 環境: MYSQL_ROOT_PASSWORD: <パス> MYSQL_DATABASE:mydb MYSQL_USER: <ユーザー> MYSQL_PASSWORD: <パス> ポート: - 「3306:3306」 ボリューム: - ./data:/var/lib/mysql phpmyadmin: 画像: phpmyadmin/phpmyadmin:最新 再起動: 常に 依存: -db ポート: - 「8888:80」 環境: PMA_ホスト: データベース MYSQL_ROOT_PASSWORD: 例 春の API: 画像: spring-api:最新 ポート: - 「8080:8080」 依存: -db ボリューム: データベースデータ: mysql-data:</pre> <p>springapi の dockerfile は次のとおりです。</p> <pre class="brush:php;toolbar:false;"># 公式の OpenJDK ランタイムを親イメージとして使用します openjdk から:17-jdk-slim # 作業ディレクトリを /app に設定します WORKDIR/アプリ # アプリケーションのjarファイルをコンテナにコピーします build/libs/backendAPI.jar backendAPI.jar をコピーします # アプリケーションを実行する CMD ["java", "-jar", "backendAPI.jar"] <p>これは、docker と run コンテナーで構成できます。 Java Spring Boot はどのようにエラーをスローしてシャットダウンしますか。エラーは次のとおりです: </p> <pre class="brush:php;toolbar:false;">`2023-03-06T12:25:37.603Z 情報 1 --- [メイン] com.zaxxer.hikari.HikariDataSource :HikariPool-1 - 開始します。 .. 2023-03-06T12:25:38.685Z エラー 1 --- [メイン] com.zaxxer.hikari.pool.HikariPool:HikariPool-1 - プールの初期化中に例外が発生しました。 com.mysql.cj.jdbc.Exceptions.CommunicationsException: 通信リンク障害 サーバーに正常に送信された最後のパケットは 0 ミリ秒前です。ドライバーはサーバーからパケットを受信して​​いません。`</pre> <p>application.settings を次のように再構成してみました: </p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://localhost:8888/mydb spring.datasource.username=<ユーザー名> spring.datasource.password=<パスワード> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver</pre> <p>しかし、効果はありません。同じエラーがスローされ続けるためです。 SQL サーバーには、指定された URL を介してアクセスできます。したがって、問題なく実行できます (管理者権限がないことを除きますが、それは別の問題です。) </p> <p>application.settings にいくつかの調整を加えたこのセットアップは、Xammp と Intellij だけを使用している場合にうまく機能します。しかし、今は接続できません。ここで何が足りないのでしょうか? </p> <p><strong>これまでに試したことを編集します</strong></p> <pre class="brush:php;toolbar:false;">db: 画像: mysql:最新 再起動: 常に コンテナ名: sql-db</pre> <p>次に application.settings を変更します。 </p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://sql-db:8888/mydb (および sql-db:3306 も)</pre> ; <p>しかし、これでも同じエラーが発生します。 </p>
P粉156532706P粉156532706387日前570

全員に返信(1)返信します

  • P粉510127741

    P粉5101277412023-08-30 00:12:12

    docker compose ファイルでデータベース サービスのコンテナ名を指定します

    リーリー

    次に、jdbc URL で、構成されたデータベース コンテナー名とデータベース コンテナーの実際に構成されたポートを参照する必要があります。

    つまり、datasource.url は

    のようになります。 リーリー

    返事
    0
  • キャンセル返事