【发布时间】:2020-08-23 19:27:57
【问题描述】:
我有一个 java spring / hibernate 应用程序,我无法在 mysql 和 java 容器之间创建连接。当我只启动 mysql 容器并在 CMD 中手动运行 java 应用程序时,它工作正常。但是一旦 java 应用程序在容器中运行,我就会遇到以下问题:
bookAPI | com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
bookAPI |
bookAPI | The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
bookAPI | at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.21.jar!/:8.0.21]
bookAPI | at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.21.jar!/:8.0.21]
如果我正确理解错误,java 容器可以发送到 mysql 容器,但反之则不行。我已将 java 容器链接到 mysql 容器。有人知道如何正确连接这些容器吗?
我的 docker-compose.yml 看起来像这样:
version: '3'
services:
db:
image: mysql:5.7
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: aaaaaa
MYSQL_DATABASE: bookAPI
MYSQL_USER: aaaaaa
MYSQL_PASSWORD: aaaaaa
ports:
- 3306:3306
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
links:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8081:80
java:
container_name: bookAPI
image: openjdk:8
depends_on:
- db
volumes:
- ./:/app
working_dir: /app
command: bash -c "cd /app && java -jar bookAPI.jar"
stdin_open: true
tty: true
ports:
- 8080:8080
links:
- db
【问题讨论】:
-
如果您删除所有
links:,那么Networking in Compose 中描述的设置应该可以正常工作。您要连接到哪个地址?你能展示一下你的那部分配置吗?
标签: java mysql docker docker-compose dockerfile