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

本地Docker Compose部署workers服务无法外部访问求助

问题描述

本地通过Docker Compose部署包含redis和workers的服务集群,配置了自定义网络office、端口映射及workers与redis的连接参数。期望通过127.0.0.1:15660或workers.office:15660访问workers服务的/metrics接口,但执行docker-compose run -e NUM_WORKERS=10 workers启动服务后,curl请求出现以下错误:

  • 执行curl 127.0.0.1:15660/metrics时,报错curl: (7) Failed to connect to 127.0.0.1 port 15658: Connection refused
  • 执行curl workers.host:15658/metrics时,报错curl: (6) Could not resolve host: workers.host

相关docker-compose.yml配置:

version: "3.3"
services:
  redis:
    image: redis
    networks:
      - office
    ports:
      - '6379:6379'
  workers:
    image: workers-image
    networks: 
      - office
    environment:
      NUM_WORKERS: 10
      REDIS_URI: 'redis://redis:6379'
    ports:
      - '15658-15680:15658-15680'
    depends_on:
      - redis
错误原因分析

1. 连接拒绝(127.0.0.1:15660无法访问)

  • docker-compose run启动的是临时容器,默认不会加载compose配置中ports字段的端口映射规则,因此本地主机无法通过127.0.0.1:15660访问到该临时容器。
  • 若要让临时容器启用端口映射,需添加--service-ports参数,执行命令改为:docker-compose run --service-ports -e NUM_WORKERS=10 workers

2. 域名无法解析(workers.host无法访问)

  • 首先是域名拼写错误:你预期的访问地址是workers.office,但实际执行的是workers.host,导致域名无法识别。
  • 其次,即便拼写正确为workers.office,本地主机也无法直接解析Docker自定义网络内的服务名。workers服务名仅在office网络内部的容器之间可被解析,本地主机不属于该网络,必须通过127.0.0.1加对应端口(需端口映射生效)访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:35:14