Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!

Supervisor + fcgiwrap, как выставить владельца (owner) на unix-socket?

Доброго времени суток, уважаемые!

Дано: Docker + Linux + supervisor + fcgiwrap. Необходимо запустить fcgiwrap, указать unix-socket и назначить на него права. Системы инициализации разумеется нет, по сему используется supervisor, конфиг:
[program:fcgi-wrap]
command=/usr/sbin/fcgiwrap -s unix:/var/run/hello.sock
process_name=%(program_name)s_%(process_num)02d
numprocs=1
autostart=true


В таком режиме работает, сокет создаётся, но владельцем/группой оного получается root. Пробовал как пишут тут, в т.ч. так как пишут в ответе, если сокет уже был создан ранее - fcgiwrap не запускается (вылетает с ошибкой, что не может закрыть сокет), в другом варианте - он просто игнорирует сокет (что в принципе ожидаемо).

Пытался скормить ему переменные окружения, и через supervisor и через ENV в Dockerfile'е... В man'е написано:
Most probably you will want to launch fcgiwrap by spawn-fcgi using a configuration like this


Только не написано, где этот самый конфигурационный файл должен лежать и как его скормить fcgiwrap'у?

Подскажите пожалуйста, как передать fcgiwrap'у параметры (пользователя:группу + права) под которыми должен быть создан unix-сокет в supervisor'e?
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
Не понял причем тут docker и supervisord.
Вы запускаете докер-контейнер и внутри него supervisor? Или supervisor'ом запускаете docker-контейнер и fcgiwrap?
Чем вас не устраивает root в качестве владельца сокета, если это внутри контейнера?

Если supervisor и fcgiwrap внутри контейнера, то просто укажите от какого юзера запускать контейнер со всем этим через "docker run --user".
Так же вы можете в конфиг supervisor добавить сам сокет и права на него, а в command указать fcgiwrap какой сокет использовать.

[program:fcgi-wrap]
command=/usr/sbin/fcgiwrap -s unix:/var/run/hello.sock
process_name=%(program_name)s_%(process_num)02d
numprocs=1
autostart=true
user = some_user
socket = unix:///var/run/hello.sock
socket_owner = some_user:some_group
socket_mode = 0770
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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