Я использую образ richarvey/nginx-php-fpm:latest (1.5.2), и я запустил контейнер, основанный на этом образе, и выполнил /bin/bash внутри.
Там я:
composer create-project symfony/website-skeleton my-projectотредактировали my-project/config/packages/dev/monolog.yaml, чтобы установить:
monolog:
handlers:
main:
type: stream
path: 'php://stderr'
level: debug
channels: ["!event"]
получил IP-адрес моего образа докера с помощью docker inspect
docker logs -f <my container>Когда я загружаю http://<my container ip>/my-project/public, я не вижу журналов отладки Symfony в выходных данных журналов контейнера.
Примечание: я вижу журналы nginx.
@ A.L: Я не понимаю вашего комментария. Когда вы только что выполнили новую установку SF, у вас есть демонстрационный маршрут, обслуживаемый на /, и когда вы обращаетесь к нему, у вас есть вывод журнала отладки о том, какой маршрут SF соответствует и так далее ... Примечание: это установка SF4, поэтому В папке public есть файл index.php, а не только активы.
Извините, я забыл, что public отличается на Symfony4. Не могли бы вы поделиться командами, которые вы используете для запуска контейнера? Хочу попробовать на себе.
Я использую простую команду запуска докера. Примерно так: команда docker run -d --name testfpm richarvey/nginx-php-fpm:latest. Затем я выполняю шаги, описанные в моем билете, внутри контейнера `` docker exec -it testfpm - / bin / bash`
Как у вас возникла идея использовать path: 'php://stderr'? Не могли бы вы поделиться ссылкой, объясняющей это использование? Может, в этой конфигурации чего-то не хватает.
Я следил за этим: stackoverflow.com/questions/38499825/… и множество других проблем с github и другие вопросы SO.
Вы тоже настроили уровень журнала супервизора?
Нет, я не менял настройки изображения для этого инструмента. Я прикрепил mysql к контейнеру, остановил fpm в супервизоре и запустил ту же команду в консоли, и я вижу журналы для стандартного вывода или вывода ошибок. Однако супервизор, похоже, не улавливает его и не перенаправляет на свой собственный вывод, чтобы они были видны докеру.






Один из моих коллег нашел решение, и специалист по сопровождению образа докера реализовал его:
Поскольку php-fpm запускается в режиме без демонстрации, вам необходимо установить флаг --force-stderr, который «Принудительно выводит на stderr в nodaemonize, даже если stderr не является TTY».
http://<my container ip>/my-project/public, я не вижу журналов отладки Symfony в выходных данных журналов контейнера. Почему вы ожидаете, что будут добавлены логи? Похоже, вы пытаетесь увидеть файлы наpublic, и файлы, вероятно, обслуживаются вашим сервером, без Symfony.