Docker-Compose环境下HAProxy访问故障排查求助
问题排查与修复步骤
先看你配置里最明显的问题:YAML缩进错误,lb服务的缩进比webapp多了一个空格,YAML对缩进要求严格,这会导致Docker Compose无法正确识别lb作为services下的子服务,这是核心问题之一。
接下来是HAProxy的配置适配问题,dockercloud/haproxy需要特定标识来发现后端服务,以下是修复后的完整配置:
version: '3' services: webapp: image: httpd ports: - 82:80 expose: - 80 # 明确暴露容器内端口,方便HAProxy检测 environment: - VIRTUAL_HOST=* # 告诉HAProxy将所有请求转发到这个服务 lb: image: 'dockercloud/haproxy:latest' volumes: - /var/run/docker.sock:/var/run/docker.sock ports: - 81:80 depends_on: - webapp # 确保webapp先启动
修复后执行以下步骤:
- 停止并删除现有容器:
docker-compose down - 重新启动服务:
docker-compose up -d - 查看HAProxy容器日志,确认是否成功发现后端:
docker-compose logs lb
如果还是无法访问,再排查这几点:
- 检查宿主机防火墙是否放行81端口
- 确认
/var/run/docker.sock的权限,HAProxy容器需要能读写这个文件,可执行sudo chmod 666 /var/run/docker.sock临时测试(生产环境建议用更安全的权限配置) - 访问
http://localhost:81时,若返回503,说明后端服务没被正确发现,需查看日志里的错误信息
内容的提问来源于stack exchange,提问作者Mohamed Badr
相关产品推荐
相关产品推荐

