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

Locust容器连接Odoo容器出现Connection Refused问题排查求助

问题分析与解决建议

核心错误点

你的Locust配置里的目标地址端口用错了:

command: -f /mnt/locust/locustfile.py --master -H http://odoo-efishery:8021

容器之间通信时,不能使用宿主机的映射端口(8021),必须用Odoo容器内部监听的端口(8069)。8021是宿主机与Odoo容器的映射端口,仅用于宿主机访问Odoo,容器间通信要直接使用容器自身的服务端口。

其他优化建议

  1. 解决depends_on的局限性
    depends_on仅保证容器启动顺序,无法确保Odoo服务完全就绪(比如数据库初始化、模块加载完成)。可以给Odoo容器添加健康检查,让Locust在Odoo真正可用后再启动:

    odoo-efishery:
      ...
      healthcheck:
        test: ["CMD", "curl", "-f", "http://localhost:8069/web"]
        interval: 10s
        timeout: 5s
        retries: 10
    

    同时修改Locust的depends_on,依赖Odoo的健康状态:

    locust-master:
      ...
      depends_on:
        odoo-efishery:
          condition: service_healthy
    locust-worker:
      ...
      depends_on:
        odoo-efishery:
          condition: service_healthy
    
  2. 简化网络配置(可选)
    Docker Compose默认会为所有服务创建同一网络,服务名(odoo-efishery)可直接作为域名访问,无需links配置,你可以去掉Odoo的links字段(不影响功能,仅简化配置)。

修正后的Locust配置示例

locust-master:
  container_name: locust-master
  image: locustio/locust
  depends_on:
    odoo-efishery:
      condition: service_healthy
  ports:
   - "8089:8089"
  volumes:
    - ./:/mnt/locust
  command: -f /mnt/locust/locustfile.py --master -H http://odoo-efishery:8069

locust-worker:
  image: locustio/locust
  depends_on:
    odoo-efishery:
      condition: service_healthy
  volumes:
    - ./:/mnt/locust
  command: -f /mnt/locust/locustfile.py --worker --master-host locust-master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:30:28