Docker-Compose运行Web服务出现ECONNREFUSED连接错误求助
排查步骤与解决方案
1. 端口映射未生效(首要原因)
你使用的docker-compose run app命令默认不会加载compose文件中的ports配置,该命令用于运行一次性任务,并非启动长期服务的正确方式。
- 正确启动命令:
docker-compose up -d app - 若必须使用
run,需手动指定端口映射:docker-compose run --publish 5001:5001 app
2. Compose文件存在语法错误
你的docker-compose.yml中ports行缺少冒号,这会导致配置解析失败:
# 修正后的完整配置 version: "3.6" services: app: build: context: . target: app ports: # 此处必须添加冒号 - 5001:5001
3. Web服务绑定地址限制
如果你的Web服务在容器内仅绑定127.0.0.1,宿主机无法访问该端口,必须改为绑定0.0.0.0:
- 检查
entrypoint.sh中的启动命令,确保监听地址为0.0.0.0:5001,而非127.0.0.1:5001
4. 容器内服务未正常启动
验证容器内服务是否在监听5001端口:
- 启动容器:
docker-compose up -d app - 进入容器:
docker exec -it $(docker-compose ps -q app) sh - 安装工具并检查端口:
若无输出,说明服务未启动或监听端口错误,需检查apt update && apt install -y net-tools netstat -tulpn | grep 5001entrypoint.sh是否正确启动了Web服务。
5. 宿主机端口冲突
检查宿主机5001端口是否被其他进程占用:
- Windows:
netstat -ano | findstr :5001 - macOS/Linux:
lsof -i :5001
若被占用,可杀掉对应进程,或修改compose文件端口映射为5002:5001(宿主机端口改为5002)
内容的提问来源于stack exchange,提问作者evgenyorlov1
相关产品推荐
相关产品推荐

