在SO中也存在类似的问题,但不是针对此特定问题。
工具:docker-compose 1.21.2; symfony 3.4; nginx 1.10.3
我有几个分离的容器("每个容器应该只有一个问题")。除了在浏览器中获取symfony(3.4)应用程序的资源外,一切都有效。 定义的路线有效,模板正确呈现,只有资产是问题。除了使用相同的设置,但在本地(没有容器)的开发机器中服务,没有问题。
有了卷,但我希望将它们用于制作,以便文档指出https://docs.docker.com/compose/production/#modify-your-compose-file-for-production您可能需要的更改:
事实:
request.ERROR: Uncaught .... NotFoundException for "GET /css/main.css" at ...RouterListener.php {"exception": ".../NotFoundHttpException(code: 0) ... ResourceNotFoundException"} []
http://<host>:<port>/app_dev.php/css/main.css
中检查dev nginx返回404.(我在外部设置了开发环境)http://<host>:<port>/app_dev.php/css
出现Symfony异常页面找不到&#34; GET / css&#34; 的路由,但信息相同{{ 1}} ResourceNotFoundException > NotFoundHttpException
中web
文件夹的访问权限没有任何区别。相关部分 docker-compose.yml
chmod -R a+rwx .../web
相关部分 nginx.conf
version: "2"
services:
site:
...
working_dir:
/var/www/html/site
site_webserver:
...
ports:
- <port>:80
depends_on:
- site
links:
- site
答案 0 :(得分:0)
你应该有现有的文件/var/www/html/site/web/css/main.css!你有吗?
Nginx配置不应将此请求/css/main.css传递给PHP代码。它应该只是将现有文件发送到浏览器。 我认为你有这个文件,但是在另一条路上。
你为它准备了正确的nginx配置,或者将资产文件放在/ var / www / html / site / web /目录中
答案 1 :(得分:0)
可以说更多但是:资产在php-fpm(symfony)容器中被阻止。
在容器的文件 www.conf (在我的情况下 /usr/local/etc/php-fpm.d/www.conf )中检查指令{{ 1}}并保持这样
security.limit_extensions
注意:我发现它评论为security.limit_extensions =
答案 2 :(得分:0)
您的主要问题是,nginx正在nginx容器中搜索资产文件。使用(app / console资产:install)安装资产后,它们将被复制到您的php(symfony)容器中。您必须将资产链接到容器之间。有一个答案可以解决:https://stackoverflow.com/a/44284993/6279901