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

Docker Compose服务间请求出现ECONNREFUSED错误求助

Docker Compose容器间连接失败排查

环境与问题

我在开发服务器用Docker Compose运行服务,简化后的docker-compose.yml内容如下:

services:
  webserver:
    - ports:
      - "${HOST_PORT}:${CONTAINER_PORT}"
  redis:
    - ports:
      - "${REDIS_PORT}:${REDIS_PORT}"
  apiserver:
    - ports:
      - "8383:8383"

webserver启动BullMQ队列与Redis通信,队列任务需要请求http://apiserver:8383/endpoint,但任务持续失败,Redis中报错信息为:connect ECONNREFUSED 172.25.0.3:8383。本地运行Docker Compose一切正常,仅开发服务器出现该问题。

补充测试结果

在webserver容器内执行wget http://apiserver:8383,输出如下:

wget http://apiserver:8383
--2022-12-24 23:58:28--  http://apiserver:8383/
Resolving apiserver (apiserver)... 172.26.0.4
Connecting to apiserver (apiserver)|172.26.0.4|:8383... failed: Connection refused.

可能的原因

  • Apiserver未正常启动:开发服务器上的apiserver容器可能启动失败、进程崩溃,或者启动速度慢于webserver,导致webserver发起请求时服务尚未就绪。可通过docker-compose logs apiserver查看日志,确认服务是否正常启动并监听8383端口。
  • Apiserver监听地址错误:如果apiserver的服务配置为仅监听127.0.0.1(本地回环地址),则同一Docker网络内的其他容器无法访问。需确认服务监听地址为0.0.0.0,才能接收来自容器网络的请求。
  • Docker网络配置差异:本地与开发服务器的Docker网络模式不同,或开发服务器的Docker网络存在冲突,导致DNS解析成功但端口无法连通。可通过docker network inspect <你的compose网络名称>查看网络配置,确认apiserver端口在网络内正常暴露。
  • 服务器资源不足:开发服务器的CPU、内存资源匮乏,导致apiserver无法正常启动或运行,无法监听端口。可查看服务器资源使用情况,以及apiserver容器的资源限制配置。
  • 端口冲突:开发服务器上可能有其他进程占用了宿主机8383端口,导致apiserver容器无法绑定端口启动。这种情况通常会在容器启动日志中报错,也可通过netstat -tulpn | grep 8383检查宿主机端口占用情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:05:44