Docker部署NodeJs应用遇连接拒绝错误,如何解决?
问题排查与解决
你的问题核心是容器端口未映射到服务器主机端口,同时需要确保服务器和云平台的防火墙规则允许对应端口的流量,以下是具体解决步骤:
1. 重新运行容器并配置端口映射
你之前执行的docker run命令没有建立容器内部端口与服务器主机端口的绑定,外部请求无法穿透到容器内的应用。执行以下命令重新启动容器:
docker run -p 3000:3000 digital-ocean-app:latest
参数-p 3000:3000的作用是将服务器主机的3000端口与容器内部的3000端口关联,外部访问服务器3000端口时,流量会自动转发到容器内的Node应用。
如果需要让容器在后台运行,可添加-d参数:
docker run -d -p 3000:3000 digital-ocean-app:latest
2. 检查Ubuntu服务器的UFW防火墙
Ubuntu默认启用UFW防火墙,需确保3000端口已被允许:
- 查看当前UFW规则状态:
sudo ufw status
- 如果未找到3000端口的允许规则,执行命令开放端口:
sudo ufw allow 3000/tcp
3. 检查DigitalOcean云防火墙规则
除了服务器自身的防火墙,DigitalOcean平台的云防火墙也可能拦截流量:
- 登录DigitalOcean控制面板,找到对应Droplet的防火墙配置
- 添加一条入站规则:协议选择TCP,端口范围填写3000,来源根据需求选择
Anywhere或指定IP范围
完成以上操作后,重新访问http://167.71.30.198:3000/status即可正常连接。
内容的提问来源于stack exchange,提问作者Gilmeri Golano
相关产品推荐
相关产品推荐

