当我的java spring应用程序尝试连接到数据库时,我得到以下信息:
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.
Run Code Online (Sandbox Code Playgroud)
spring应用程序中的连接URL如下:
jdbc:mysql:// mysqldbserver:3306 / supersede_orchestrator_spring?useSSL = false&autoReconnect = true&failOverReadOnly = false&maxReconnects = 10
其中mysqldbserver是docker-compose配置中的服务名称:
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
Run Code Online (Sandbox Code Playgroud)
在mysql docker容器中,我已经将bind-address调整为0.0.0.0。supersede_orch用户的特权设置为%。当我连接到springappserver docker容器时,我可以通过telnet mysqldbserver 3306到达数据库,也可以在命令行上从spring docker容器连接数据库:mysql -h mysqldbserver -u supersede_orch -p。尽管java spring应用程序无法连接到在另一个docker容器上运行的数据库。
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"]
Run Code Online (Sandbox Code Playgroud)
因此,我试图确保java使用IP4解析mysqldbserver(我也使用了mysqldbserver的相应IP地址,但同样失败了)。
最后docker images -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
Run Code Online (Sandbox Code Playgroud)
您知道可能是什么问题吗?谢谢!
| 归档时间: |
|
| 查看次数: |
9970 次 |
| 最近记录: |