@MikUrrey

Как вытащить логи PHP наружу из контейнера?

В php.ini указал, куда писать логи, в Dockerfile создаю нужный файл, в docker-compose монтирую папку с ним, но по итогу лог не создается и ошибки никуда не пишутся. Подозреваю, что создавая файл до монтирования тома, я его теряю. Как сделать правильно?

фрагмент php.ini:
error_reporting = E_ALL
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = On
report_memleaks = On
html_errors = Off
error_log = "/usr/local/php-logs/php-fpm.log"

фрагмент Dockerfile:
FROM php:8.0-fpm

RUN mkdir -p /usr/local/php-logs && \
touch /usr/local/php-logs/php-fpm.log && \
chmod 666 /usr/local/php-logs/php-fpm.log

фрагмент docker-compose:
version: '3'
services:
  #PHP
  php:
    build:
      context: ./image/php8.0/.
    image: analytics/php:8.0
    container_name: analytics-php8.0
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: analytics
      SERVICE_TAGS: prod
    working_dir: /var/www
    volumes:
      - ./app:/var/www
      - ./logs:/usr/local/php-logs
  #Nginx Service
  webserver:
    build:
      context: ./image/nginx/.
    image: analytics/nginx
    container_name: analytics-ngnx
    restart: unless-stopped
    tty: true
    ports:
      - "${HTTP_PORT}:80"
      - "${HTTP_SECURE_PORT}:443"
    volumes:
      - ./app:/var/www
      - ./logs:/var/log/nginx
  • Вопрос задан
  • 1059 просмотров
Решения вопроса 1
@MikUrrey Автор вопроса
Помог следующий совет от единомышленника с другого ресурса:

Поскольку вся директория, куда подключается том, замещается, нужно выполнить создание файла после монтирования, используя секцию CMD:
CMD touch /usr/local/php-logs/php-fpm.log && \
  chmod 666 /usr/local/php-logs/php-fpm.log && \
  php-fpm -F

(php-fpm -F - это команда запуска сервера, которая уже была в CMD).

Теперь всё работает просто отлично.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dmitriylanets
@dmitriylanets
веб-разработчик
а если так
error_log = "/var/www/logs/php-fpm.log"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы