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

Docker部署Nginx时无法加载CSS/JS静态文件的问题排查

问题原因及解决方法

1. 容器挂载参数覆盖了镜像内的构建文件

你执行的docker run命令里的-v /usr/share/nginx/html/是错误操作:

docker run -p 8080:80 -v /usr/share/nginx/html/ test_nine

这个参数会将宿主机的/usr/share/nginx/html目录(不存在则自动创建空目录)挂载到容器内同路径,直接覆盖了你通过COPY --from=builder复制到镜像里的React构建产物,导致容器内的静态资源目录为空,触发404错误。

解决方法:
删除多余的-v参数,正确的运行命令为:

docker run -p 8080:80 test_nine

2. React构建的资源路径配置错误

从错误日志可见,页面请求的资源路径是/web/static/css/...,但你将React构建后的build目录直接复制到了容器的/usr/share/nginx/html,实际静态资源路径应为/usr/share/nginx/html/static/...,两者路径不匹配。这说明React项目的资源根路径配置错误,导致构建后HTML里的资源引用多了一层/web前缀。

解决方法:

  • 若使用Create React App创建项目:
    在package.json中添加或修改homepage字段:
    "homepage": ".",
    
    或者构建时指定环境变量:
    PUBLIC_URL=. yarn build
    
  • 若使用自定义Webpack配置:
    修改output.publicPath为./或空字符串:
    module.exports = {
      output: {
        publicPath: './',
        // 其他配置项...
      }
    }
    

修改后重新构建镜像并运行容器即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:15:40