とJDBCの通信リンク障害私のJavaの春のアプリケーションは、私は、次の取得データベースに接続しようとします:MySQLのドッキングウィンドウコンテナ
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
次のように春のアプリケーションでの接続URLは次のとおりです。
JDBC :mysqlの:// mysqldbserver:?3306/supersede_orchestrator_spring useSslオプション= falseを&自動再=真& failOverReadOnly = falseを& maxReconnects = 10
mysqldbserve私はすでに0.0.0.0にバインドアドレスを調整MySQLのドッキングウィンドウコンテナで
version : '3'
services:
springappserver:
build:
context: .
dockerfile: web.dockerfile
ports:
- "8081:8080"
networks:
- mt-network
volumes:
- .:/vol/development
depends_on:
- mysqldbserver
mysqldbserver:
build:
context: .
dockerfile: db.dockerfile
ports:
- "13306:3306"
networks:
- mt-network
environment:
MYSQL_DATABASE: supersede_orchestrator_spring
MYSQL_USER: supersede_orch
MYSQL_PASSWORD: ****
MYSQL_ROOT_PASSWORD: ****
container_name: orchestrator_mysqldbserver
networks:
mt-network:
driver: bridge
:rがドッキングウィンドウ・コン設定からサービス名です。 supersede_orchユーザーの権限は%に設定されています。 springappserverドッカーコンテナに接続すると、telnet mysqldbserver 3306経由でデータベースにアクセスできます。また、スプリングドッカーのコンテナからコマンドラインでmysql -h mysqldbserver -u supersede_orch -pというデータベースに接続することもできます。 Javaスプリングアプリケーションは、他のドッカーコンテナで実行されているDBに接続できません。次のように
web.dockerfileに見えます:
FROM java:8-jre
VOLUME /tmp
ADD build/libs/feedback_orchestrator-2.0.0.jar app.jar
RUN apt-get update
RUN apt-get install mysql-client -y
RUN apt-get install libmysql-java -y
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true","-jar","/app.jar"]
だから、私はJavaが(私もまた失敗したmysqldbserverために対応するIPアドレスを使用)mysqldbserverを解決するためにIP4を使用していることを確認してみました。
最後に画像-aをドッキングウィンドウ:
42db4e656e6e orchestrator_springappserver "java '-Djava.secu..." 16 minutes ago Up 16 minutes 0.0.0.0:8081->8080/tcp orchestrator_springappserver_1
e2b0b5cc15ac orchestrator_mysqldbserver "docker-entrypoint..." 2 hours ago Up About an hour 0.0.0.0:13306->3306/tcp orchestrator_mysqldbserver
あなたは問題が何ができるか任意のアイデアを持っていますか?ありがとうございました!
springappserverの前にmysqldbserverを定義するか、springappserverだけを再起動すると、データベースサーバが起動する前にSpringブートが開始されているという問題が発生している可能性があります。 –
いずれにしても、次の項目もチェックしてください:https://stackoverflow.com/questions/2983248/com-mysql-jdbc-exceptions-jdbc4-communicationsexception-communications-link-fai –