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

Docker Compose部署Spring Boot连接MySQL容器通信链路失败求助

Docker Compose部署Spring Boot与MySQL容器连接失败问题

在Windows 10本地通过Docker Compose部署Spring Boot微服务和MySQL数据库容器,耗时16小时排查(查阅资料、咨询AI等)仍无法解决连接问题,始终报错:

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

说明:若本地直接运行Spring Boot应用,将application.properties中的数据源地址改为spring.datasource.url=jdbc:mysql://localhost:3307/wallet_microservice,即可成功连接容器内的MySQL。

docker-compose.yaml配置

version: '3.7'

services:
  docker-mysql:
    image: mysql:latest
    ports:
      - "3307:3306"
    environment:
      MYSQL_DATABASE: wallet_microservice
      MYSQL_ROOT_PASSWORD: root
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: root

    volumes:
      - ./src/main/resources/data/schema.sql:/docker-entrypoint-initdb.d/schema.sql
  myapp:
    build:
      dockerfile: Dockerfile
    ports:
      - "8080:8080"

    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/wallet_microservice?autoReconnect=true&useSSL=false

    depends_on:
      - docker-mysql

Dockerfile配置

FROM eclipse-temurin:17
WORKDIR /app
COPY build/libs/*.jar app.jar
CMD ["java", "-jar", "app.jar"]

Spring Boot application.properties配置

spring.datasource.url=jdbc:mysql://docker-mysql:3306/wallet_microservice
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

已完成的排查内容

  • 网络配置:未定义自定义网络时,Compose会自动创建默认网络,两个服务默认处于同一网络,配置无问题
  • 服务依赖:depends_on仅保证启动顺序,不确保MySQL完全初始化,但手动用Postman连接仍报错,排除时序问题
  • MySQL配置:环境变量设置正确
  • 防火墙:同一主机容器间通信,防火墙干扰可能性低,已检查本地规则
  • Docker Compose配置:服务定义与端口映射正确,MySQL端口3307:3306映射正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:05:02