3.6 KiB
3.6 KiB
故障排查指南
连接超时问题排查
如果访问 http://101.43.95.130:3006 时出现连接超时(ERR_CONNECTION_TIMED_OUT),请按以下步骤排查:
1. 检查容器是否运行
# 查看容器状态
docker ps -a | grep workdizhi-web
# 或使用docker-compose
docker-compose ps
如果容器没有运行:
# 启动容器
docker-compose up -d
# 或使用docker命令
docker start workdizhi-web
2. 检查容器日志
# 查看容器日志,检查是否有错误
docker-compose logs -f
# 或
docker logs -f workdizhi-web
3. 检查端口监听状态
# 检查3006端口是否在监听
netstat -tlnp | grep 3006
# 或
ss -tlnp | grep 3006
# 或
lsof -i :3006
如果端口没有监听,检查:
- 容器是否正常启动
- docker-compose.yml 中的端口映射是否正确
4. 检查防火墙配置
CentOS/RHEL 7+ (firewalld)
# 查看防火墙状态
systemctl status firewalld
# 如果防火墙开启,需要开放3006端口
firewall-cmd --permanent --add-port=3006/tcp
firewall-cmd --reload
# 验证端口是否开放
firewall-cmd --list-ports
Ubuntu/Debian (ufw)
# 查看防火墙状态
ufw status
# 开放3006端口
ufw allow 3006/tcp
# 重新加载
ufw reload
iptables
# 开放3006端口
iptables -A INPUT -p tcp --dport 3006 -j ACCEPT
iptables-save
5. 检查云服务器安全组(重要!)
如果使用的是云服务器(阿里云、腾讯云、AWS等),需要在控制台配置安全组规则:
- 登录云服务器控制台
- 找到对应的服务器实例
- 进入"安全组"配置
- 添加入站规则:
- 协议:TCP
- 端口:3006
- 源:0.0.0.0/0(允许所有IP访问,或指定特定IP)
- 动作:允许
6. 本地测试
在服务器上测试本地访问:
# 测试本地3006端口
curl http://localhost:3006
# 或
curl http://127.0.0.1:3006
# 如果本地可以访问,说明容器正常,问题在防火墙或安全组
7. 检查Docker服务状态
# 检查Docker服务是否运行
systemctl status docker
# 如果未运行,启动Docker
systemctl start docker
systemctl enable docker
8. 重新构建和启动
如果以上都正常,尝试重新构建和启动:
# 停止并删除旧容器
docker-compose down
# 重新构建镜像
docker-compose build --no-cache
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
9. 验证部署
部署成功后,应该能看到:
- 容器状态为
Up - 端口映射正确:
0.0.0.0:3006->80/tcp - 日志无错误信息
快速检查脚本
可以运行以下命令快速检查:
#!/bin/bash
echo "=== 检查容器状态 ==="
docker ps -a | grep workdizhi-web
echo -e "\n=== 检查端口监听 ==="
netstat -tlnp | grep 3006 || ss -tlnp | grep 3006
echo -e "\n=== 检查防火墙 ==="
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --list-ports | grep 3006
elif command -v ufw &> /dev/null; then
ufw status | grep 3006
fi
echo -e "\n=== 测试本地访问 ==="
curl -I http://localhost:3006 2>&1 | head -1
常见问题
Q: 容器启动后立即退出
A: 检查日志:docker logs workdizhi-web,可能是镜像构建失败或文件缺失
Q: 本地可以访问,外网无法访问
A: 检查防火墙和安全组配置,确保3006端口已开放
Q: 端口被占用
A: 检查是否有其他服务占用3006端口,或修改docker-compose.yml使用其他端口
Q: 容器运行但无法访问
A: 检查Nginx配置,确保容器内Nginx正常启动