【发布时间】:2018-06-08 09:44:01
【问题描述】:
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 您可能需要进行更改:
- 删除应用程序代码的所有卷绑定,以便代码保留在容器内并且不能从外部更改
事实:
- 在 nginx 容器日志中报告 404 次访问但没有错误。
- 在 php-symfony 容器内,prod 日志显示类似
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.cssnginx 返回 404。(我使开发环境在外部可用) - 在浏览器中检查 dev 的路由,例如
http://<host>:<port>/app_dev.php/css出现 Symfony 异常页面 No route found for "GET /css" 具有相同的信息ResourceNotFoundException > NotFoundHttpException - 修改对容器
chmod -R a+rwx .../web中web文件夹的访问权限不会产生影响。
相关部分docker-compose.yml
version: "2"
services:
site:
...
working_dir:
/var/www/html/site
site_webserver:
...
ports:
- <port>:80
depends_on:
- site
links:
- site
相关部分nginx.conf
server {
listen 80;
server_name "";
root /var/www/html/site/web;
location / {
try_files $uri /app.php$is_args$args;
}
location ~ ^.*/(app_dev|config)\.php(/|$) {
fastcgi_pass lockate_site:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
}
}
【问题讨论】:
标签: php symfony docker nginx docker-compose