Symfony+Docker+Nginx部署时.js和.css文件404无法加载
问题解决:Symfony+Docker+Nginx下Webpack Encore静态文件404
问题根源
你的Nginx容器没有挂载项目的public目录。虽然PHP-FPM的app容器挂载了整个项目目录,能正常处理index.php请求,但静态文件(JS/CSS)是由Nginx直接返回的,Nginx容器内没有这些文件,因此返回404。
修复步骤
修改docker-compose.prod.yml,给web服务添加public目录的挂载:
services: # nginx web: image: nginx:latest ports: - "80:80" volumes: - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf # 添加这一行,将本地public目录挂载到Nginx容器对应路径 - ./public:/var/www/html/public app: build: dockerfile: ./php/Dockerfile volumes: - /var/www/html/vendor - .:/var/www/html
验证操作
- 停止并重启容器:
docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml up -d --build
- 刷新页面,静态文件即可正常加载。
额外检查(可选)
- 确认Webpack Encore的构建输出路径为
public/build(你的目录结构已符合要求) - 确认Nginx配置中的
root指向/var/www/html/public(你的配置已正确设置)
内容的提问来源于stack exchange,提问作者ch3ssnut
相关产品推荐
相关产品推荐

