Считается ли Docker-образ discourse/discourse безопасным и готовым к использованию в production?

Привет!
Я зарегистрировался, чтобы сказать большое спасибо всем за вашу помощь, особенно @featheredtoast.
Мне почти удалось всё настроить, но отправка писем не работала.
Думаю, это было связано с тем, что я использую Caddy в качестве обратного прокси.

Теперь я вернулся к использованию Discourse отдельно от всех остальных сервисов в моём docker-compose.

Подскажите, пожалуйста, как заставить это работать с Caddy? Думаю, мне нужно использовать сокет, но я не знаю, как изменить app.yml внутри конфигурации docker-compose для Discourse.

Всего наилучшего вам — Y

Если только вы не настраивали Caddy для проксирования исходящей почты, я не думаю, что это имеет отношение к делу.

Вам не обязательно использовать сокет; вы можете просто указать имя контейнера Docker и/или его IP-адрес. В статье Discourse working with jwilder /nginx proxy & acme-companion - #7 by Steve_Emerson рассказывается об использовании шаблонного варианта с сокетом и о многих других вещах.

Короткий ответ: нет, не через docker-compose в чистом виде — это то, что я хотел бы видеть, но план состоит в том, чтобы позволить каждому создавать кастомизированный базовый образ, который можно будет публично распространять для продвижения дела. Создание плагина включает клонирование репозитория плагина, выполнение bundle install, npm и повторную компиляцию Ember… Это не должно выполняться при запуске.

Поэтому часть этой идеи заключается в том, чтобы образы собирались так же, как и образ discourse/discourse — с тем же файлом app.yml, что и поддерживаемые версии Discourse.

В качестве примера я создаю свой личный образ с плагином resenha, обновив основной файл app.yml для включения плагина здесь, а затем выгрузив его во внешний (публичный!) реестр Docker.

Если вы используете внешний почтовый сервис, я не думаю, что проблема, скорее всего, в вашем обратном прокси Caddy. В отличие от текущих сборок launcher, образ discourse/discourse не будет напоминать вам о настройке переменных окружения для почты (хотя это всё ещё необходимо сделать) — я бы сначала проверил их.

Мне удалось изменить ограничение размера загрузки:

cat fix-upload-size.sh (который нужно сделать исполняемым через chmod +x):

#!/bin/sh
sed -i 's/client_max_body_size .*;/client_max_body_size 500m;/' /etc/nginx/conf.d/discourse.conf

в файле docker-compose.yml:

    volumes:
     - ./fix-upload-size.sh:/etc/runit/1.d/fix-upload-size

Мне удалось собрать образ, но «только» с использованием версии ESR. Когда я использую что-то новее, процесс сборки требует наличия базы данных и экземпляра Redis. Это намеренно?

Есть ли способ обновить Discourse до последней версии при использовании этого образа?

Я использую его для форума исследовательской группы моего факультета и хотел бы обновиться до последнего релиза Discourse, но образ не обновлялся с марта. Какой способ обновления рекомендуется?

Это был непреднамеренный побочный эффект добавления вызова для очистки зависших веб-обновлений; я планирую решить эту проблему в ближайшее время через FIX: run clear_stuck_web_upgrades during precompile stage · Pull Request #1055 · discourse/discourse_docker

Отлично, спасибо!

Но у меня есть ещё один вопрос: я использую Azure для студентов и Container Apps. Если я каким-то образом обновлюсь внутри приложения, я боюсь, что если экземпляр, на котором работает Discourse, по какой-то причине откажет, это может привести к беспорядку на нашем форуме, потому что при перезапуске он, скорее всего, вернётся к предыдущей версии.

Ещё раз большое спасибо!

Это риск — к сожалению, иного хорошего способа избежать этого нет, кроме как убедиться, что образ актуален, если вы обновляете приложение и одновременно обновляете образы, загружая их из репозитория Docker. Я бы настоятельно не рекомендовал так делать.

Тем временем я всё ещё разбираюсь с репозиторием Docker (здесь есть ещё одна проблема, которую нужно решить).

OK, завтрашняя сборка должна быть восстановлена с этим патчем, так что вы сможете обновиться, загрузив последний образ, как и ожидалось — спасибо за сообщение :slight_smile:

–и мы снова в строю! Последний образ теперь доступен.