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

同一Docker网络中容器间连接被拒绝问题求助

问题分析与解决思路

核心问题

你遇到的连接拒绝错误,本质是容器内的localhost指向容器自身,而非宿主机。当document_core容器发起http://localhost:60100请求时,它是在尝试访问自己容器的60100端口,而不是宿主机映射到documentdata容器的端口。Docker Compose默认会为所有服务创建一个共享网络,服务名可直接作为域名解析到对应容器的IP。

解决步骤

1. 修正服务间请求地址

将document_core中指向documentdata的请求地址,从http://localhost:60100改为http://documentdata:80:

  • documentdata是docker-compose中定义的服务名,同一网络内可直接解析
  • 80是documentdata容器内部暴露的端口(而非宿主机映射的60100)

2. 检查配置变量(若有)

如果document_core通过环境变量或配置文件存储documentdata的地址,确保配置值为http://documentdata:80。比如可以在document_core的服务定义中添加环境变量:

services:
  document_core:
    # 其他配置...
    environment:
      - documentdata_endpoint=http://documentdata:80

3. 验证网络连通性

进入document_core容器内部,测试与documentdata的连通性:

# 进入document_core容器
docker exec -it Document_Core powershell

# 测试ping解析
ping documentdata

# 测试服务可达性
Invoke-WebRequest -Uri http://documentdata:80

如果能ping通且请求返回正常,说明网络配置无问题。

4. 处理服务启动顺序问题

depends_on仅保证documentdata在document_core之前启动,但不保证documentdata服务已完全就绪。若document_core启动时documentdata还未初始化完成,会出现临时连接失败。可以添加健康检查确保服务就绪后再启动依赖服务:

services:
  documentdata:
    # 其他配置...
    healthcheck:
      test: ["CMD", "powershell", "-Command", "Invoke-WebRequest -Uri http://localhost:80/health -UseBasicParsing"]
      interval: 10s
      timeout: 5s
      retries: 3
  document_core:
    # 其他配置...
    depends_on:
      documentdata:
        condition: service_healthy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:17:43