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

API容器连接MySQL容器抛出CommunicationsException问题求助

核心问题拆解

直接运行项目能连数据库容器,是因为你用的是宿主机的localhost(数据库容器已映射3306端口到宿主机);但容器化后,API容器的localhost指向自身网络空间,无法直接访问宿主机或数据库容器。同时你给数据库容器设置了hostname: localhost,这会导致docker-compose内部网络中,数据库的主机名与API容器的localhost冲突,彻底阻断服务名访问路径。


分步修复方案

1. 修正 docker-compose.yml 配置

移除数据库服务的错误hostname配置,添加API服务对数据库的启动依赖,保证启动顺序:

version: '3.8'

services:
  book-catalog-db:
    container_name: mysqlbc
    image: mysql:latest
    volumes:
      - ./proyecto/sql-data/db:/var/lib/mysql
    ports:
      - 3306:3306
    # 删除错误的hostname: localhost配置
    environment:
      MYSQL_USER: 'admin'
      MYSQL_PASSWORD: 'admin'
      MYSQL_ROOT_PASSWORD: 'root'
      # 移除重复的MYSQL_ROOT_PASSWORD配置项

  book-catalog-angular:
    container_name: angularbc
    image: book-catalog-client:latest
    volumes:
     - ./proyecto/web-assets:/usr/share/nginx/html/assets
    ports:
     - 4200:80

  book-catalog-api:
    container_name: apibc
    image: coreapi:latest
    ports:
     - 8080:8080
    # 添加依赖,确保数据库容器先启动
    depends_on:
      - book-catalog-db

2. 修改API数据库连接配置

将API配置文件(如application.properties/application.yml)中的数据库地址从localhost替换为docker-compose中的数据库服务名book-catalog-db:

# application.properties 示例
spring.datasource.url=jdbc:mysql://book-catalog-db:3306/你的数据库名?useSSL=false&serverTimezone=UTC
spring.datasource.username=admin
spring.datasource.password=admin

3. 重新构建镜像并重启服务

因配置文件已修改,需重新打包项目并构建镜像:

# 以Gradle项目为例,重新打包
./gradlew build
# 重新构建API镜像
docker build -t coreapi:latest .
# 重启所有服务
docker-compose down && docker-compose up -d

4. 处理数据库启动延迟问题

depends_on仅保证容器启动顺序,不保证数据库服务完全就绪。若仍出现连接失败,给数据库添加健康检查,让API等待数据库就绪后再启动:
在book-catalog-db服务中添加健康检查:

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

修改API服务的依赖条件:

book-catalog-api:
  # ...其他配置
  depends_on:
    book-catalog-db:
      condition: service_healthy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:01:02