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

如何使用Dockerfile替换Docker中Nginx默认页面并排查故障

Docker部署Nginx静态站点显示默认页排查步骤

按以下顺序逐一排查即可定位问题:

  • 第一步:校验本地构建上下文文件
    先在Dockerfile所在目录执行ls(Windows系统执行dir),确认当前目录根路径下存在你自定义的index.html文件,不要把静态资源放在二级、三级子目录里(比如前端打包生成的dist目录,直接在根目录执行COPY会把整个dist文件夹拷入容器,不会覆盖根路径的默认首页)。如果静态文件存放在子目录,需要把Dockerfile的COPY指令改为对应路径,例如COPY ./dist/* /usr/share/nginx/html/。
  • 第二步:校验容器内实际文件
    执行以下命令进入运行中的容器,查看Nginx静态目录下的实际文件:
    docker exec -it website /bin/bash
    ls /usr/share/nginx/html
    
    如果目录下只有Nginx默认的index.html、50x.html两个文件,说明COPY指令没有成功覆盖文件,回到第一步检查本地文件路径。
  • 第三步:清理构建缓存重新部署
    Docker构建时会复用旧层缓存,如果你修改了本地文件但没触发COPY层更新,会导致镜像里还是旧文件。执行以下命令清理旧资源后无缓存重建:
    docker stop website
    docker rm website
    docker rmi newwebsite
    docker build --no-cache -t newwebsite .
    docker run --name website -d -p 8080:80 newwebsite
    
  • 第四步:校验Nginx配置
    进入容器查看默认站点配置,确认根路径指向正确:
    cat /etc/nginx/conf.d/default.conf
    
    找到location /配置块,确认root字段值为/usr/share/nginx/html,index字段包含index.html。如果配置被篡改指向其他目录,修正配置后重载Nginx即可。
  • 第五步:校验服务访问链路
    在容器内执行curl http://localhost:80,如果返回的是你自定义的页面,说明问题出在宿主机端口映射或本地防火墙规则,可以更换宿主机映射端口(比如用-p 8090:80)重新启动容器测试;如果容器内curl返回的还是默认Nginx页,回到前面的文件、配置检查步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:03:39