[Примечание: Мой случай не совсем относится к проблеме #установки, но ошибка, которую я получаю, совпадает с той, что описана в этой теме, и моё решение (ниже) может помочь другим. Модераторы (@pfaffman?), пожалуйста, перенесите эту тему в более подходящий раздел, если это необходимо.]
Сообщение об ошибке ArgumentError появляется после выполнения команды ./launcher rebuild app на моём собственном сервере с Docker (установлен и работает уже много лет). Проблема возникает из-за того, что unicorn не может записать pid-файл в директорию /var/www/discourse/tmp/pids (внутри контейнера). В логе наблюдается цикл сообщений ArgumentError при попытках записать этот файл каждые несколько секунд.
Я захожу в контейнер с хост-машины через
docker exec -it app bash
Изнутри контейнера выполняю команду
find /var/www/discourse -printf '%u:%g\n' | sort -t: -u
Это показывает список владельцев:групп в этой директории
root:root
discourse:discourse
Затем я делаю директорию /var/www/discourse/tmp/pids доступной для чтения всеми
chmod +r /var/www/discourse/tmp/pids
После этого в эту директорию записывается файл unicorn.pid. У файла владелец:группа — discourse:www-data.
Мое решение заключалось в рекурсивном изменении владельца директории /var/www/discourse на discourse:www-data.
chown -R discourse:www-data /var/www/discourse
Это занимает много времени, так как файлов более 100 000. Вероятно, нет необходимости менять права для всей директории, но я поступил именно так.
Наконец, я сделал файл /etc/postgres/13/main/pg_hba.conf доступным для чтения всеми
chmod +r /etc/postgres/13/main/pg_hba.conf
Перезапускаю контейнер, и всё работает.
Кажется, что настройка прав доступа к файлам не совсем корректна, но я недостаточно хорошо разбираюсь в тонкостях управления правами, чтобы найти более простое решение. Тот факт, что у файла unicorn.pid группа www-data, кажется ключевым моментом.
Похоже, что эту процедуру нужно будет выполнять каждый раз при выполнении rebuild (то есть при любом изменении файла app.yml). Также обратите внимание, что проблема не связана с каким-либо конкретным плагином.
Надеюсь, этой информации достаточно, чтобы один из разработчиков мог взглянуть и сказать: «Конечно! Мне просто нужно изменить x, чтобы исправить это».