Dockerfile 里 COPY 文件后 CSS 样式不生效是怎么回事?
我在 Dockerfile 里用 COPY 把本地的 dist 目录复制进容器了,但部署后网页的样式完全没加载,控制台也没报错,就是纯裸 HTML。我本地 dev 和 build 都正常,是不是路径写错了?
这是我的关键 CSS 代码:
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto;
background-color: #f5f5f5;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
我 Dockerfile 里写的是 COPY ./dist /usr/share/nginx/html,Nginx 配置也检查过,应该没问题啊……
首先检查下 CSS 文件是否真的被复制到了容器里。可以在 Dockerfile 里加一句 CMD ["ls", "-R", "/usr/share/nginx/html"],这样启动容器时就能看到实际目录结构了。如果没看到 CSS 文件,那 COPY 指令可能有问题。
假设文件确实存在,接下来要看 Nginx 配置是不是把静态文件指向对了。nginx.conf 里的 location / { } 块要确保允许访问这些静态资源,默认配置一般是没问题的,但自定义配置可能影响到。
再来就是浏览器缓存的问题,特别是用了 service worker 的时候。可以试试清除浏览器缓存或者直接用隐私模式重新加载页面看效果。
还有一个常见问题是相对路径写错了。比如 HTML 里引用 CSS 的方式:
<link rel="stylesheet" href="/main.css">这里的斜杠开头表示从根目录开始查找,而你的文件结构可能不符合这个预期。
要是都检查过了还没解决,试着把构建后的 dist 目录打开看看 CSS 文件内容是不是完整的,有时候构建工具可能会遗漏某些步骤导致输出不完整。
最后提醒下,记得每次修改后都要重新 build 镜像,不然改的东西不会生效。开发调试真挺磨人的,不过慢慢找总能找到原因的。
没的话加上重启容器应该能用。再不行就看看dist里css文件路径对不对。