172 похожих чатов

Всех привет. Есть возможность подсказать и направить как правильно работать

с логами приложения.
Приложение на Yii.
Запускается с помощью docker-compose
docker-compose
version: '3'
services:
web:
image: nginx
restart: always
volumes:
- ./docker/conf/nginx/default.conf:/etc/nginx/conf.d/default.conf
- .:/var/www/html
ports:
- 80:80
depends_on:
- php
php:
image: yiisoftware/yii2-php:7.1-fpm
restart: always
volumes:
- ./docker/conf/php/php.ini:/usr/local/etc/php/conf.d/php.ini
- .:/var/www/html
Всё работает, запускается.
И в приложение добавляются функции, которые логируют свои действия в файлы. Файлы находятся в /var/www/html/data/logs. Всё идёт отлично, в самом контейнере я вижу
$ sudo docker container exec -it php_1 bash
root@16270e4c7275:/app# ls -la /var/www/html/data/logs
total 1
drwxrwxrwx 1 root root 0 Jan 12 02:03 . // разрешения на запись для всех пользователей /var/www/html/data/logs
drwxrwxrwx 1 root root 0 Dec 30 03:12 ..
-rwxrwxrwx 1 root root 104 Jan 12 02:03 12-01-2021.log // сам лог
Было бы замечательно сохранять эти логи при перезапусках контейнера. Для этого используются тома (volume), если я правильно разобрался. Добавляю их использование
docker-compose
php:
image: yiisoftware/yii2-php:7.1-fpm
restart: always
volumes:
- ./docker/conf/php/php.ini:/usr/local/etc/php/conf.d/php.ini
- .:/var/www/html
- useractionlogs:/var/www/html/data/logs
volumes:
pgdata:
useractionlogs:
Но теперь в контейнере я вижу
$ sudo docker container exec -it php_1 bash
root@16270e4c7275:/app# ls -la /var/www/html/data/logs
total 1
drwxr-xr-x 1 root root 0 Jan 12 02:03 . // права на запись только для пользователя root для /var/www/html/data/logs
drwxrwxrwx 1 root root 0 Dec 30 03:12 ..
Я могу конечно в контейнере поправить права
root@f11ac585d3b3:/app# chmod go+rw /var/www/html/data/logs
root@f11ac585d3b3:/app# ls -la /var/www/html/data/logs
total 4
drwxrwxrwx 2 root root 4096 Jan 12 02:19 .
drwxrwxrwx 1 root root 0 Dec 30 03:12 ..
Но так, видимо, надо делать при каждом (пере)создании тома (например, при развёртывании приложения на новой машине)

Может быть есть правильный докер-путь для работы с логами, который я не знаю? Или может как-то настраиваются права для папок?

Заранее спасибо за помощь 😊

4 ответов

14 просмотров

Правильный путь - писать логи в stdout/stderr

https://12factor.net/logs

Если не трогать приложение само, то варианты навскидку Ентрипоинт создающий папку с нужными правами Папка создаётся на хосте и биндится с локальным драйвером

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта