Locust容器连接Odoo容器出现Connection Refused问题排查求助
问题分析与解决建议
核心错误点
你的Locust配置里的目标地址端口用错了:
command: -f /mnt/locust/locustfile.py --master -H http://odoo-efishery:8021
容器之间通信时,不能使用宿主机的映射端口(8021),必须用Odoo容器内部监听的端口(8069)。8021是宿主机与Odoo容器的映射端口,仅用于宿主机访问Odoo,容器间通信要直接使用容器自身的服务端口。
其他优化建议
解决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简化网络配置(可选)
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
相关产品推荐
相关产品推荐

