同一Docker网络下Spring Boot应用无法连接MySQL容器问题求助
需修改的配置项
1. 修正数据库连接地址
修改application.properties中的spring.datasource.url配置:
原配置错误原因:配置中的localhost指向Spring Boot容器自身的环回地址,无法访问同Docker环境下的MySQL容器。你启动容器时使用了--link docker-mysql:mysql参数,mysql是MySQL容器的访问别名,直接替换即可,同时补充MySQL 8.x版本所需的时区等参数避免额外报错:
spring.datasource.url=jdbc:mysql://mysql:3306/dockertest?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
2. 修正JDBC驱动类
你使用的是MySQL 8.x版本的连接器,原配置中的com.mysql.jdbc.Driver已经废弃,替换为新的驱动类:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
可选优化配置(推荐)
--link是Docker已经废弃的功能,建议使用自定义桥接网络实现容器互通,操作步骤如下:
- 创建自定义网络:
docker network create app-network - 启动MySQL容器时加入该网络:
docker run -d --name=docker-mysql --network app-network --env="MYSQL_ROOT_PASSWORD=test123" --env="MYSQL_USER=user1" --env="MYSQL_PASSWORD=test123" --env="MYSQL_DATABASE=dockertest" -p 3306:3306 mysql
- 启动Spring Boot容器时加入该网络,无需再加
--link参数:
docker run -t -p 8080:8080 --network app-network docker-userapp
该场景下数据库连接地址可直接填写MySQL容器名docker-mysql。
内容的提问来源于stack exchange,提问作者user404
相关产品推荐
相关产品推荐

