You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot应用连接MySQL Docker容器问题咨询

连接宿主机Spring Boot到Docker容器内的MySQL方案

嘿,很高兴你开始尝试Spring Boot + Docker MySQL的组合!我来帮你梳理下具体的连接步骤,其实很简单:

1. 先确认Docker容器状态

首先确保你的MySQL容器已经正常启动并完成端口映射,在docker-compose.yml所在目录执行:

docker-compose ps

你应该能看到db容器的状态是Up,并且端口列显示0.0.0.0:3306->3306/tcp——这说明宿主机的3306端口已经和容器内的3306端口绑定成功了。

2. 配置Spring Boot的数据源

接下来修改你的Spring Boot项目配置文件(application.properties或application.yml),填入正确的连接信息:

如果用application.properties:

# 核心连接URL:localhost对应宿主机,users是你在docker-compose中创建的数据库
spring.datasource.url=jdbc:mysql://localhost:3306/users?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
# 用户名与Docker环境变量一致
spring.datasource.username=root
# 密码为你设置的secret
spring.datasource.password=secret
# MySQL 8.x版本驱动类(5.x版本请用com.mysql.jdbc.Driver)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果用application.yml:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/users?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    username: root
    password: secret
    driver-class-name: com.mysql.cj.jdbc.Driver

这里几个参数补充说明:

  • useSSL=false:本地测试场景下关闭SSL连接,避免不必要的报错
  • serverTimezone=UTC:解决MySQL 8.x版本的时区匹配问题
  • allowPublicKeyRetrieval=true:避免连接时出现"public key retrieval is not allowed"的错误

3. 先验证连接(可选但推荐)

在启动Spring Boot应用前,建议先在宿主机用MySQL客户端测试连接,确认容器内的数据库能正常访问:

mysql -h localhost -P 3306 -u root -p

输入密码secret后如果能进入MySQL命令行,说明容器侧的配置没问题,接下来启动Spring Boot应用就能正常连接了。

可能遇到的小坑

  • 如果连接失败,先检查宿主机的防火墙是否开放了3306端口;
  • 如果你用的是Linux系统,偶尔会遇到本地MySQL服务占用3306端口的情况,这时可以修改docker-compose.yml里的宿主机端口(比如改成3307:3306),然后Spring Boot的URL里改成localhost:3307即可。

内容的提问来源于stack exchange,提问作者MrADOY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:13:43