Смотрите заголовок. Я оказался в довольно неприятной ситуации. Я пытаюсь откатиться к сборке Discourse до версии Ember 5, чтобы обеспечить долгосрочную поддержку устаревших версий для моего форума, который зависит от плагинов, ставших неработоспособными после нового релиза Discourse. Чтобы отмотать время назад на несколько дней, я всё очистил (удалил контейнер, полностью удалил /var/discourse и заново загрузил репозиторий с GitHub), и теперь начинаю с чистого листа с абсолютно свежей установкой Discourse. В моём файле .yml я указал “version: beta”, поэтому я должен оказаться в версии до Ember 5.
После того как я выполнил обычные действия по созданию и подтверждению учётной записи администратора, у меня появляется бесконечный экран загрузки. Да, я также захожу в безопасный режим и включаю принудительное использование HTTPS, как всегда делаю в своей настройке.
Я перепробовал всё: удалял плагины, начинал заново без каких-либо плагинов, кроме абсолютно минимального набора — всего лишь…
- git clone https://github.com/discourse/docker_manager.git
… в моём файле .yml. Никаких результатов. После настройки учётной записи администратора я всё ещё (даже на минимальной чистой установке) вижу бесконечный экран загрузки смерти.
Посмотрев в консоль, я вижу следующее:
Вот мой текущий файл .yml:
## это шаблон контейнера Docker Discourse "всё в одном", автономный
##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## для проверки файла используйте http://www.yamllint.com/
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал тот же порт, что и другой веб-сервер, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
- "10080:80" # http
- "10443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Установите db_shared_buffers максимум в 25% от общего объёма памяти.
## будет установлено автоматически при загрузке в зависимости от обнаруженной оперативной памяти, или вы можете переопределить
db_shared_buffers: "2048MB"
## может улучшить производительность сортировки, но увеличивает потребление памяти на соединение
#db_work_mem: "40MB"
## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
version: beta
## Максимальный размер загрузки (по умолчанию: 10m)
upload_size: 8196m
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Сколько одновременных веб-запросов поддерживается? Зависит от объёма памяти и количества ядер CPU.
## будет установлено автоматически при загрузке в зависимости от обнаруженных процессоров, или вы можете переопределить
UNICORN_WORKERS: 8
## TODO: Доменное имя, на которое будет реагировать этот экземпляр Discourse
## Обязательно. Discourse не будет работать с чистым IP-адресом.
DISCOURSE_HOSTNAME: forum.tabletpc.review
## Раскомментируйте, если хотите, чтобы контейнер запускался с тем же
## именем хоста (опция -h), что указано выше (по умолчанию "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Список email-адресов через запятую, которые станут администраторами и разработчиками
## при первоначальной регистрации, например 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'admin@tabletpc.review'
## TODO: SMTP-сервер, используемый для проверки новых учётных записей и отправки уведомлений
## SMTP-адрес, имя пользователя и пароль обязательны
## ВНИМАНИЕ: символ '#' в пароле SMTP может вызвать проблемы!
DISCOURSE_SMTP_ADDRESS: [REDACTED]
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [REDACTED]
DISCOURSE_SMTP_PASSWORD: " [REDACTED]"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (опционально, по умолчанию true)
## Если вы добавили шаблон Lets Encrypt, раскомментируйте ниже, чтобы получить бесплатный SSL-сертификат
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Адрес CDN для этого экземпляра Discourse (настроен на получение)
## см. https://meta.discourse.org/t/14857 для деталей
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
DISCOURSE_MAXMIND_LICENSE_KEY: [REDACTED]
## Контейнер Docker не хранит состояние; все данные хранятся в /shared
volumes:
- volume:
host: /var/discourse/shared/tabletpcreview
guest: /shared
- volume:
host: /var/discourse/shared/tabletpcreview/log/var-log
guest: /var/log
## Плагины размещаются здесь
## см. https://meta.discourse.org/t/19157 для деталей
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Любые пользовательские команды для выполнения после сборки
run:
- exec: echo "Начало пользовательских команд"
## Если вы хотите установить адрес электронной почты 'From' для вашей первой регистрации, раскомментируйте и измените:
## После получения первого письма о регистрации закомментируйте строку обратно. Выполнять нужно только один раз.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Конец пользовательских команд"
РЕДАКТИРОВАНИЕ: Странно, но если отключить плагины в безопасном режиме, сайт работает. Однако, если оставить их включёнными, он не работает. У меня всего один плагин — Docker Manager, так почему же он не загружается?
Это работает: https://forum.tabletpc.review/?safe_mode=no_plugins
Это не работает: https://forum.tabletpc.review/?safe_mode=no_themes

