Как диагностировать если один контейнер создает файл laravel-2025-01-01.log топ почему другой контейнер не может получить доступ?

Ссылка скопирована
1 ответ

Нужно понять: кратко - есть 2 докер контейнера - horizon и php-fpm - если horizon запишет файл под своим user-ом то другой контейнер не может получить к нему доступ, не может его записать, как сделать чтобы мог?

-rw-r--r-- 1 root root 1637496 Oct 8 08:59 laravel-2025-10-08-1.log -rw-r--r-- 1 1000 1000 49113 Oct 8 08:59 laravel-2025-10-08.log

По вводным: "...-1.log" файл - скопированный

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Если один контейнер создаёт файл laravel-2025-01-01.log, а другой контейнер не может его прочитать или записать, почти всегда причина в правах пользователя, volume mount или разных путях внутри контейнеров. В Docker контейнеры изолированы: файл, созданный в одном контейнере, виден другому только через общий volume.

Проверьте, что оба контейнера используют один и тот же volume:

services:
  app:
    volumes:
      - ./storage:/var/www/html/storage
  queue:
    volumes:
      - ./storage:/var/www/html/storage

services: app: volumes: - ./storage:/var/www/html/storage queue: volumes: - ./storage:/var/www/html/storage

Если volume общий, смотрите владельца и права:

docker exec -it app ls -la storage/logs
docker exec -it queue id
docker exec -it queue ls -la storage/logs

docker exec -it app ls -la storage/logs docker exec -it queue id docker exec -it queue ls -la storage/logs

Laravel обычно пишет логи пользователем www-data или пользователем PHP-FPM. Если один контейнер работает от root, а второй от www-data, первый может создать файл так, что второй не сможет писать.

Решение — привести UID/GID к одному виду и выставить права на storage:

chown -R www-data:www-data storage bootstrap/cache
chmod -R ug+rw storage bootstrap/cache

chown -R www-data:www-data storage bootstrap/cache chmod -R ug+rw storage bootstrap/cache

В продакшене лучше не давать 777. Это быстро “лечит” симптом, но создаёт лишний риск. Правильнее одинаковый пользователь в контейнерах и общий writable volume.

Также проверьте настройку Laravel LOG_CHANNEL. Если несколько процессов пишут в один файл, используйте daily/single аккуратно. Для контейнеров часто лучше писать логи в stdout/stderr и собирать их Docker/лог-системой.

Итог: проверьте общий volume, одинаковый путь, пользователя внутри контейнеров и права на storage/logs. Проблема обычно не в Laravel, а в Docker-правах и владельце созданного файла.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно