You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Docker的node:20-alpine镜像中部署Nginx无法访问问题排查

问题排查与修复方案

1. 优先检查:端口映射缺失

你运行容器的命令未做端口映射,Docker容器网络默认与宿主机隔离,必须显式将容器内端口映射到宿主机端口才能被外部访问。

  • 正确运行命令:
    docker run -p 80:80 react
    
    该命令将宿主机80端口与容器内80端口绑定,之后再访问localhost:80即可。

2. 验证容器内Nginx端口监听状态

若已做端口映射仍无法访问,需确认容器内Nginx是否在正确监听端口:

  • 查看运行中的容器ID:
    docker ps
    
  • 进入容器终端:
    docker exec -it <你的容器ID> sh
    
  • 安装端口监听工具(若容器内无netstat):
    apk add net-tools
    
  • 检查端口监听:
    netstat -tulpn
    
    • 如果输出中没有0.0.0.0:80的监听记录,说明Nginx仅监听容器内部的127.0.0.1,需修改nginx.conf中的监听配置:将listen 80;改为listen 0.0.0.0:80;,确保Nginx监听容器所有网卡,允许外部访问。

3. 检查Nginx配置与构建产物

  • 验证构建产物是否正确复制:进入容器后执行ls /www,确认目录下存在index.html文件。如果没有,说明npm run build的输出目录不是/app/lib,需修改Dockerfile中的COPY --from=react-build /app/lib .为实际的构建输出目录(比如常见的/app/build或/app/dist)。
  • 检查Nginx配置语法:在容器内执行nginx -t,如果配置有语法错误,会直接提示问题位置(如路径错误、指令写错等)。
  • 查看Nginx日志:你的配置中日志使用相对路径,可在/www目录下查看error.log;也可修改nginx.conf中的日志路径为绝对路径(如error_log /var/log/nginx/error.log warn;),之后执行cat /var/log/nginx/error.log获取详细错误信息。

4. 确认文件权限

虽然你已设置chown -R www:www /www,仍需确认文件权限是否正确:

  • 进入容器执行ls -l /www,确保文件和目录的所有者是www用户,否则Nginx可能无法读取静态文件,导致访问失败。

内容的提问来源于stack exchange,提问作者user23399175

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:46:26