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

SpringBoot应用无法连接Docker部署的MySQL数据库问题排查

解决Docker部署SpringBoot无法连接MySQL的问题

核心问题定位

你遇到的通信失败问题,主要源于三个关键点:

  1. Docker内部服务通信的地址和端口配置错误
  2. SpringBoot启动时MySQL还未完全就绪
  3. MySQL用户权限限制了跨容器访问

具体修复步骤

1. 修正SpringBoot数据库连接配置

修改application.settings(或application.properties)的数据库连接参数:

spring.datasource.url=jdbc:mysql://db:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.username=<your-user>
spring.datasource.password=<your-pass>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 添加连接重试与超时配置,适配MySQL启动延迟
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-test-query=SELECT 1
  • 关键注意:用Docker Compose服务名db作为主机地址,端口使用容器内部的3306(而非宿主机映射端口);添加serverTimezone避免时区不匹配,allowPublicKeyRetrieval解决公钥验证报错。

2. 确保MySQL服务就绪后启动SpringBoot

depends_on仅保证容器启动顺序,不保证MySQL服务完全就绪,可通过两种方式处理:

  • 方式一:SpringBoot内置重试配置
    添加以下配置让应用在连接失败时自动重试:
    spring.datasource.hikari.initialization-fail-timeout=0
    spring.jpa.hibernate.ddl-auto=update
    
  • 方式二:Docker Compose添加等待脚本
    修改spring-api服务的启动命令,用wait-for-it脚本等待MySQL端口就绪:
    spring-api:
      image: spring-api:latest
      ports:
        - "8080:8080"
      depends_on:
        - db
      command: ["./wait-for-it.sh", "db:3306", "--", "java", "-jar", "backendAPI.jar"]
    
    需提前将wait-for-it.sh脚本复制到SpringBoot容器中(修改Dockerfile添加COPY wait-for-it.sh /app/指令)。

3. 修正MySQL用户权限

容器内的SpringBoot应用不属于MySQL的localhost访问范围,需授权用户允许跨主机访问:

  1. 进入MySQL容器:
    docker exec -it <db-container-name> mysql -uroot -p
    
  2. 执行权限授予命令:
    GRANT ALL PRIVILEGES ON mydb.* TO '<your-user>'@'%';
    FLUSH PRIVILEGES;
    
    替换<your-user>为你配置的MySQL用户名。

4. 验证Docker Compose配置一致性

  • 检查docker-compose.yml中db服务的MYSQL_USER、MYSQL_PASSWORD与SpringBoot配置的用户名密码完全匹配
  • 无需额外设置container_name,Docker Compose默认用服务名db作为内部DNS解析地址

验证修复

重新构建SpringBoot镜像并启动容器:

docker-compose build spring-api
docker-compose up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:53:22