PermissionError: [Errno 13] Отказано в доступе: '/var/log/supervisor/migrate-stdout

Я запускаю супервизора без полномочий root внутри Docker, моя конфигурация:

[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0

Когда я запускаю контейнер, я получаю сообщение об ошибке

PermissionError: [Errno 13] Отказано в доступе: '/var/log/supervisor/migrate-stdout---supervisor-jxo2nr9k.log'

Потому что нет разрешения писать, что правильно. Я хочу образ только для чтения, я не могу ничего записать на диск.

Можно ли запретить супервизору записывать файлы? Или лучше перенаправить на stdout/err?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
317
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо обновить конфигурацию отдельных программ, управляемых Supervisor, чтобы также перенаправить их стандартный вывод и стандартный вывод на /dev/stdout и /dev/stderr соответственно.

например, если у вас есть такая конфигурация:

[program:migrate]
command=your-command
stdout_logfile=/var/log/supervisor/migrate-stdout.log
stderr_logfile=/var/log/supervisor/migrate-stderr.log

то вы должны обновить это:

[program:migrate]
command=your-command
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

так что в итоге:

[supervisord]
nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
loglevel=info
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:migrate]
command=your-command
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

Это не работает в файловой системе только для чтения, я получил ошибку: PermissionError: [Errno 13] Отказано в доступе: '/var/log/supervisor/migrate-stdout ---supervisor-qupxrtld.lo‌​g'

Rodrigo 03.04.2023 13:15

Другие вопросы по теме