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

Docker Compose环境下Spring Boot容器无法连接MySQL容器求助

Spring Boot容器无法连接MySQL容器的问题排查与解决

问题现象

使用Docker Compose部署Spring Boot和MySQL容器时,Spring Boot容器抛出连接错误:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

配置错误点及修正方案

1. 数据库连接端口配置错误

容器间通信需使用容器内部端口,而非映射到主机的端口。当前application.properties中误用了主机映射端口49152,应改为MySQL容器内部默认端口3306。

修正后的application.properties:

spring.datasource.url= jdbc:mysql://trips-db:3306/wslny?allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true
spring.datasource.username= root
spring.datasource.password= admin
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto= update

2. MySQL数据卷挂载路径错误

MySQL官方镜像的默认数据存储路径为/var/lib/mysql,当前配置挂载到/home/sharedData会导致MySQL无法正确初始化数据目录,引发数据库启动异常。

修正后的docker-compose.yml(trips-db服务部分):

trips-db:
  image: "mysql"
  container_name: "trips-db"
  volumes:
      - newDatabase:/var/lib/mysql  # 修正为MySQL默认数据路径
  ports:
      - 49152:3306
  environment:
    - MYSQL_USER=adham
    - MYSQL_PASSWORD=123 
    - MYSQL_ROOT_PASSWORD=admin
    - MYSQL_DATABASE=wslny  # 新增:自动初始化目标数据库

3. 容器启动顺序与健康检查缺失

Spring Boot容器可能在MySQL完全启动就绪前发起连接,导致失败。需添加依赖配置和MySQL健康检查,确保数据库就绪后再启动应用。

补充健康检查到docker-compose.yml的trips-db服务:

trips-db:
  # 其他配置...
  healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-padmin"]
    interval: 5s
    timeout: 5s
    retries: 5

修改trips-app服务的依赖配置:

trips-app:
  build: ./Wasalny_BE
  container_name: trips-app
  ports:
      - 8080:8080
  depends_on:
    trips-db:
      condition: service_healthy  # 等待MySQL健康检查通过后启动
  links:
      - trips-db

4. 数据库初始化优化

添加MYSQL_DATABASE=wslny环境变量,让MySQL容器启动时自动创建目标数据库,无需依赖Spring Boot的createDatabaseIfNotExist参数,提升初始化可靠性。

最终部署命令

执行以下命令重新部署容器:

docker-compose up -d --force-recreate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:30:45