docker网络无法与springboot和mysql一起工作



我试图通过docker运行spring-boot和mysql,但存在无法连接的问题。

docker-compose.yml

version: "3.7"
services:
docker-mysql:
container_name: docker-mysql
image: mysql:8.0.28
environment:
MYSQL_USER: user
MYSQL_PASSWORD: 1234
MYSQL_ROOT_PASSWORD: 1234
ports:
- "3306:3306"
networks:
- docker-mysql
app:
build: .
ports:
- "8080:8080"
depends_on:
- docker-mysql
container_name: app
networks:
- docker-mysql
networks:
docker-mysql:

和弹簧引导应用程序。yml

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://docker-mysql:3306?
username: root
password: 1234

当我使用docker-compose运行它时,您会得到一个错误,即无法连接到数据库。

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.28.jar!/:8.0.28]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.28.jar!/:8.0.28]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829) ~[mysql-connector-java-8.0.28.jar!/:8.0.28]
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449) ~[mysql-connector-java-8.0.28.jar!/:8.0.28]
..
...
Caused by: java.net.NoRouteToHostException: No route to host
at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na]

docker compose文件中的MySql用户名是user,但在Spring配置中,它是root

我不知道这一行是否正确:url: jdbc:mysql://docker-mysql:3306?

在撰写文件的末尾添加以下行:

driver: bridge

因此,您的docker-compose.yml文件是:

version: "3.7"
services:
docker-mysql:
container_name: docker-mysql
image: mysql:8.0.28
environment:
MYSQL_USER: user
MYSQL_PASSWORD: 1234
MYSQL_ROOT_PASSWORD: 1234
ports:
- "3306:3306"
networks:
- docker-mysql
app:
build: .
ports:
- "8080:8080"
depends_on:
- docker-mysql
container_name: app
networks:
- docker-mysql
networks:
docker-mysql:
driver: bridge

https://docs.docker.com/compose/compose-file/compose-file-v3/#driver-1

最新更新