docker-compose nginx не найден маршрут для ресурсов Symfony - PullRequest
0 голосов
/ 08 июня 2018

Есть похожие вопросы в 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 в журналах продуктов отображаются такие строки, как request.ERROR: Uncaught .... NotFoundException for "GET /css/main.css" at ...RouterListener.php {"exception": ".../NotFoundHttpException(code: 0) ... ResourceNotFoundException"} []
  • Проверка dev в браузере http://<host>:<port>/app_dev.php/css/main.css nginx return 404. (Я сделал среду dev доступной извне)
  • Проверка dev в браузере на наличие маршрута, например http://<host>:<port>/app_dev.php/css появляется страница исключения Symfony Не найдено ни одного маршрута для "GET / css" с той же информацией ResourceNotFoundException > NotFoundHttpException
  • Изменениеправа доступа к папке web в контейнере chmod -R a+rwx .../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;
    }
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Можно сказать гораздо больше, но: ресурсы были заблокированы в контейнере php-fpm (symfony's).

В файле контейнера www.conf (в моем случае / usr / local / etc / php-fpm.d / www.conf ) проверьте директиву security.limit_extensions и оставьте ее в таком виде

security.limit_extensions = 

Примечание.1011 *

0 голосов
/ 08 июня 2018

у вас должен быть существующий файл /var/www/html/site/web/css/main.css!У вас это есть?

Конфигурация Nginx не должна передавать этот запрос /css/main.css в код PHP.Он должен просто отправить существующий файл в браузер.Я думаю, что у вас есть этот файл, но по другому пути.

Вы должны исправить конфигурацию nginx для него или поместить файлы assets в / var / www / html / site / web / directory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...