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

Docker部署Spring Boot微服务WebClient调用报错:无法解析address-api

问题原因

两个微服务分别通过独立的docker-compose up启动,默认会被分配到不同的Docker专属网络中,导致Person服务无法解析Address服务的address-api主机名,因为跨网络的服务无法直接通过主机名/服务名互相访问。

解决方案

方案1:合并到同一个docker-compose文件

将两个服务的配置放到同一个docker-compose.yml中,Docker Compose会自动创建一个共享网络,所有服务默认加入该网络,可直接通过服务名/主机名通信。

示例合并后的配置:

services:
  # Address服务配置
  address-api:
    build: ./address-service  # 替换为Address服务的实际项目路径
    restart: always
    ports:
      - "8083:8080"
    depends_on:
      sale:
        condition: service_healthy
    hostname: address-api

  # Person服务配置
  person-api:
    build: ./person-service  # 替换为Person服务的实际项目路径
    restart: always
    ports:
      - "8082:8080"  # 根据实际需求调整外部映射端口

  # 依赖的sale服务(需确保配置完整)
  sale:
    image: your-sale-image:tag  # 根据实际情况填写镜像信息
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:xxx/health"]  # 配置健康检查规则
      interval: 10s
      timeout: 5s
      retries: 3

方案2:手动创建共享网络

如果不想合并配置,可创建一个公共Docker网络,让两个服务的compose文件都加入该网络:

  1. 先创建共享网络:
docker network create microservices-shared-net
  1. 修改Address服务的docker-compose.yml,加入网络配置:
services:
  address-api:
    build: .
    restart: always
    ports:
      - "8083:8080"
    depends_on:
      sale:
        condition: service_healthy
    hostname: address-api
    networks:
      - microservices-shared-net
  sale:
    # 原sale服务配置
    networks:
      - microservices-shared-net

networks:
  microservices-shared-net:
    external: true  # 声明使用已存在的外部网络
  1. 修改Person服务的docker-compose.yml,加入同一个网络:
services:
  person-api:
    build: .
    restart: always
    ports:
      - "8082:8080"
    networks:
      - microservices-shared-net

networks:
  microservices-shared-net:
    external: true
额外注意点
  • 确认Address服务的sale依赖已正确配置健康检查规则,避免Address服务未完全启动就被Person服务调用。
  • Person服务中调用地址http://address-api:8080/address/是正确的(容器内部使用8080端口,无需用外部映射的8083端口)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:42:49