К сожалению, простое выполнение
./launcher start app
не возвращает форум к работе.
В любом случае, я провел дополнительные эксперименты. В частности, я попытался вручную выполнить команду yarn, которая не срабатывает, внутри образа Docker:
./launcher enter app
cd /var/www/discourse
su discourse
yarn install --frozen-lockfile
... завершается с тем же таймаутом ...
yarn config set network-timeout 600000 -g
yarn install --frozen-lockfile
... успешно ...
Это подтверждает, что увеличение таймаута решает проблему.
Теперь остается вопрос: как увеличить таймаут также при выполнении ./launcher rebuild app.
Файл web.template.yml действительно находится в discourse/containers вне образа Docker. Изначально я его не нашел, потому что моя установка Discourse расположена в нестандартном месте, а не в /var/discourse.
Исправление, упомянутое в ссылке выше, относится к строке 159, но теперь это, вероятно, уже неактуально из-за обновлений. Однако есть следующие строки около строки 188:
- exec:
cd: $home
hook: yarn
cmd:
- |-
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
В посте предлагается добавить новый раздел для установки таймаута, но конкретных инструкций, как это сделать, нет. Я не очень хорошо знаком с YAML, Pups и Yarn, а также с тем, как они используются в Discourse, поэтому не хотел гадать. Вместо этого я попробовал внести следующее изменение в исходный раздел:
- exec:
cd: $home
hook: yarn
cmd:
- |-
if [ "$version" != "tests-passed" ]; then
rm -rf app/assets/javascripts/node_modules
fi
- su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'
Команда ./launcher rebuild app теперь выполняется очень долго (более двух часов!, значительно дольше, чем раньше). Хорошая новость в том, что форум снова работает! Отлично, спасибо за помощь.
Есть ли способ увеличить таймаут, добавив команду в containers/app.yml? Это было бы удобно, так как все мои настройки остались бы в одном файле.
Использование конфигурации с двумя контейнерами звучит как отличная идея; я не знал, что это возможно. Думаю, вы имеете в виду это: Move from standalone container to separate web and data containers; я попробую это реализовать. Любые дополнительные советы будут приняты с благодарностью.
Когда я обновляю свой экземпляр Discourse через браузер, выполняется ли также команда ./launcher rebuild app? При этом форум временно становится недоступным? До сих пор у меня сложилось впечатление, что форум остается онлайн в течение большей части процесса, но я не уверен. Эти моменты никогда не были для меня ясны, и у меня никогда не было времени, чтобы во всем разобраться. Любые ответы или ссылки на дополнительную информацию будут приняты с благодарностью.