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>