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

Docker部署的Spring Boot服务无法连接Docker MySQL数据库求助

问题:Docker部署的Spring Boot服务无法连接同Docker部署的MySQL,但本地Toad可连接
  • 错误信息:

com.mysql.cj.jdbc.exceptions.CommunicationsException:

docker-compose.yaml 配置

version: "3.7"

services:
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: Jadeite1!
      MYSQL_DATABASE: account
    ports:
      - "3306:3306"
    networks:
      - jadeite1000

  accountwebservices:
    image: bithead/accountwebservices:latest
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/account
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: Jadeite1!
    mem_limit: 700m
    ports:
      - "8080:8080"
    networks:
      - jadeite1000

networks:
  jadeite1000: null

application.properties 配置

#Enabling MYSQL:
spring.datasource.url=jdbc:mysql://localhost:3306/account
spring.datasource.username=root
spring.datasource.password=Jadeite1!
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

server.port=8080
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
rosalind_url=https://uguc.outsystemsenterprise.com/Rosalind/rest/v1/
x_api_key=cc6c6117-ce9a-41a4-a2a0-34a992d27d5c
x_fapi_financial_id=UHCE00VKVHPGEYRZB906
spring.jackson.serialization.fail-on-empty-beans=false

account.app.jwtSecret= bezKoderSecretKey
account.app.jwtExpirationMs= 86400000

解决方法

核心问题:Docker Compose同一网络内的容器,localhost指向容器自身,而非宿主机或其他容器。

  1. 修改Spring Boot服务的数据库连接地址
    将docker-compose中accountwebservices的SPRING_DATASOURCE_URL替换为:

    SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/account?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    

    额外参数是为了适配MySQL 8.x的连接限制,避免SSL、公钥检索和时区导致的连接失败。

  2. 配置优先级说明
    docker-compose的环境变量优先级高于application.properties,修改后会自动覆盖本地配置。若想直接修改配置文件,可将application.properties中的spring.datasource.url改为jdbc:mysql://mysql:3306/account,再重新构建镜像。

  3. 网络验证
    两个服务已加入jadeite1000自定义网络,通过服务名称mysql即可直接连通,无需依赖宿主机端口映射(端口映射仅用于外部工具如Toad访问)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:45:35