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

Docker中Spring Boot应用无法连接MySQL的问题求助

解决方案:Docker容器间网络连通问题

核心原因

默认Docker bridge网络不支持容器名的DNS解析,即使手动设置--hostname也无法让不同容器通过名称互相访问。必须使用自定义Docker网络,这类网络默认提供容器名到IP地址的自动解析。

分步解决

1. 创建自定义Docker网络

docker network create e-health-network

2. 重新启动MySQL容器并加入自定义网络

docker run -d -p 3306:3306 --name mysqldb --network e-health-network -e MYSQL_ROOT_PASSWORD=123456789 -e MYSQL_DATABASE=eHealth mysql

3. 启动Spring Boot容器并加入同一网络

docker run -p 8082:8082 --name e-health --network e-health-network e-health

额外验证步骤

  • 检查MySQL容器是否正常启动:

    docker logs mysqldb
    

    确认日志中出现ready for connections字样,说明MySQL服务已就绪。

  • 验证Spring Boot容器能否解析mysqldb:

    docker exec -it e-health ping mysqldb
    

    如果能收到响应,说明网络连通正常。

可选优化:处理MySQL启动延迟问题

如果Spring Boot容器启动时MySQL还未完全就绪,会再次出现连接失败。可以:

  • 在Spring Boot项目中添加连接重试配置(比如HikariCP的重试参数):
    在application.properties中添加:
    spring.datasource.hikari.connection-timeout=30000
    spring.datasource.hikari.max-lifetime=1800000
    spring.datasource.hikari.maximum-pool-size=10
    spring.datasource.hikari.connection-test-query=SELECT 1
    
  • 或者使用Docker Compose编排,结合wait-for-it等脚本等待MySQL服务就绪(需额外配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:10:35