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

Привет, команда Discourse,

В настоящее время мы оцениваем Docker-образ, доступный здесь: discourse/discourse - Docker Image

Этот образ был опубликован очень недавно (менее 24 часов назад на момент написания), и я не смог найти ссылок на него в официальной документации.

Мой вопрос:

  • Является ли этот Docker-образ официально поддерживаемым командой Discourse для использования в производственной среде?
  • Или это экспериментальный образ, который может быть удален или изменен неожиданно?

Мы хотим убедиться, что безопасно полагаться на этот образ в наших производственных средах.

Спасибо

Я полагаю, что образ Docker находится по адресу discourse/base - Docker Image. (более 5 млн загрузок против 800+). См.:

Репозиторий Docker всегда содержит последнюю собранную версию по адресу: discourse/base - Docker Image. Вам не следует создавать базовый образ вручную.

Спасибо за ваш ответ, я это знаю. Но мне не удалось легко запустить образ discourse/base с помощью Docker Compose. Новый образ discourse/discourse значительно упрощает настройку и работает отлично, но я хочу понять его назначение и можно ли использовать его в production.

Прочитайте:

discourse/discourse — это новый проект, но он всё ещё экспериментальный, поэтому мы не рекомендуем использовать его в продакшене. Мы обязательно опубликуем дополнительную информацию, когда ситуация изменится и проект будет готов к использованию.

На данный момент мы можем поддерживать только стандартную установку.

Как описано, поддерживаемый способ самостоятельного хостинга — следовать стандартной установке. Если вы не хотите этого делать, то вы, по сути, остаетесь один на один с проблемой. Если вы хотите запустить сервис с помощью docker-compose, я рекомендую использовать launcher для сборки вашего образа, загрузки его в собственный репозиторий, а затем выполнить команду ./launcher start-cmd web_only, чтобы получить необходимые переменные окружения (ENV) и другие параметры для запуска. При этом вам всё равно потребуется выполнить действия для миграции базы данных, предкомпиляции ассетов и так далее.

Вы также можете настроить GitHub для автоматической сборки образов, которые будут выполнять миграцию и другие необходимые действия при запуске (как это однажды, судя по всему, будет предоставлено CDCK). Я уже делал подобное для клиентов ранее. (Готов помочь, если у вас есть бюджет.)

Если вы любите работать на переднем крае, использование «экспериментальной» версии, вероятно, довольно безопасно, но с оговоркой: вам потребуется наличие тестового сайта (staging), где вы будете проверять каждое новое развертывание перед выкаткой в продакшн, а также быть готовым либо подождать некоторое время, либо предпринять действия, требующие глубоких знаний Discourse, чтобы продолжить работу. Худший сценарий (вероятно) заключается в том, что вам придётся сделать резервную копию и восстановить стандартную установку, пока экспериментальная версия не станет стабильной для промышленного использования.

Есть ли у вас ориентировочная дата выпуска или график, когда discourse/discourse может считаться стабильным и готовым к использованию в продакшене?

Кроме того, хочу уточнить: является ли Docker-образ discourse/discourse с открытым исходным кодом? Если да, не могли бы вы предоставить ссылку на репозиторий GitHub?

На данный момент у меня нет никаких сроков или гарантий. Но, надеюсь, в ближайшие недели у нас будет больше информации, которой можно поделиться.

Да, всё это открытый исходный код. Он собирается и публикуется регулярно с помощью этого рабочего процесса GitHub Actions: discourse_docker/.github/workflows/push-web-only.yml at main · discourse/discourse_docker · GitHub

Спасибо за информацию и за то, что поделились ссылкой на GitHub, это очень ценно!

Да, это уже становится открытым секретом, что готовится :slight_smile:

Вы можете получить технический превью того, что грядёт, но, как сказал Дэвид, мы пока не можем официально его поддерживать. Нужно проработать множество документации, протестировать пограничные случаи и т. д., поэтому мы не рекомендуем использовать его в продакшене, пока не устраним эти вопросы.

@david / @featheredtoast, вы с командой проделали здесь отличную работу.

Я только что перешёл с bitnami/discourse на discourse/discourse для автоматизированного тестирования, и всё работает превосходно. Очевидно, мой сценарий использования идеален: запускаю новый форум, провожу тесты, удаляю.

Поэтому просто хотел выразить большую благодарность. Уверен, что многие другие тоже извлекут из этого пользу, особенно когда решение станет стабильным, официальным и поддерживаемым.

Аналогичная ситуация: я искал быстрый способ развернуть Discourse в среде Docker Compose, чтобы упростить разработчикам создание интеграции SSO. Похоже, это работает отлично (ниже приведена конфигурация для тех, кто заинтересован):

docker-compose.yml
volumes:
  redis_data: {}
  discourse_data: {}
  discourse_postgres: {}
  discourse_postgres_data: {}

services:
  mailpit:
    image: docker.io/axllent/mailpit:latest
    container_name: mailpit
    ports:
      - '8025:8025'

  redis:
    image: redis:7-alpine
    container_name: redis
    volumes:
      - redis_data:/data
    ports:
      - '6379:6379'
    command: redis-server --appendonly yes

  discourse_db:
    image: discourse/postgres
    container_name: discourse_db
    volumes:
      - discourse_postgres:/var/lib/postgresql
      - discourse_postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB: discourse
      - POSTGRES_USER: admin
      - POSTGRES_PASSWORD: admin_password
      - DB_USER: discourse_user
      - DB_PASSWORD: discourse_user_password

  discourse:
    image: discourse/discourse:3.5.1
    container_name: discourse
    depends_on:
      - discourse_db
      - redis
      - mailpit
    ports:
      - '80:80'
    volumes:
      - discourse_data:/shared
    environment:
      - DISCOURSE_HOSTNAME: localhost
      - DISCOURSE_DEVELOPER_EMAILS: admin@example.com
      - DISCOURSE_DB_HOST: discourse_db
      - DISCOURSE_DB_PORT: 5432
      - DISCOURSE_DB_NAME: discourse
      - DISCOURSE_DB_USERNAME: discourse_user
      - DISCOURSE_DB_PASSWORD: discourse_user_password
      - DISCOURSE_REDIS_HOST: redis
      - DISCOURSE_REDIS_PORT: 6379
      - DISCOURSE_SMTP_ADDRESS: mailpit
      - DISCOURSE_SMTP_PORT: 1025
      - DISCOURSE_SMTP_ENABLE_START_TLS: false
      - DISCOURSE_SMTP_AUTHENTICATION: none
      - LANG: en_US.UTF-8

С нетерпением жду информации о будущих планах или сроках. Хотелось бы иметь возможность запускать это на таких платформах, как Digital Ocean App Platform (чтобы клиенты могли управлять этим с меньшими техническими знаниями).

Спасибо, что поделились, @JackNZ. Я даже не заметил образ discourse/postgres :sweat_smile: Мне нужно будет это исправить. Тем не менее, я тоже расскажу, на каком этапе нахожусь. Возможно, более интересным будет скрипт start.sh здесь, который, хотя и требует некоторой доработки, создаст пользователя-администратора, ключ API и отключит ограничители скорости.

Действительно, спасибо за информацию о bitnami/discourse. Я использовал официальный способ установки в ограниченной сети, и это было довольно мучительно. Я попробую вариант bitnami/discourse. Спасибо!

Подсказка на случай, если вам понадобится помощь

Bitnami больше не поддерживает эти варианты. Upcoming changes to the Bitnami catalog (effective August 28th, 2025) · Issue #35164 · bitnami/charts · GitHub

Я бы попробовал пока ещё не поддерживаемые автономные образы Discourse. Есть сообщения об их успешной работе.

Попробую образ discourse/discourse, спасибо за доброе напоминание.

Близко ли это сейчас к готовности для продакшена? Если нет, есть ли дорожная карта или ориентировочные сроки, когда это будет?

Кстати, отличная работа — обновление простого тега образа значительно упростит управление новыми релизами :+1:

В нашей системе хостинга происходят внутренние обновления, которые выявили непредвиденные зависимости. Их необходимо устранить, прежде чем я смогу подать заявку на официальную поддержку. Однако, как я полагаю, последние препятствия планируется устранить в этом квартале. Это был долгий путь.

Тем временем все мои сайты размещаются через образ Docker discourse/discourse, и здесь всё работает стабильно.

Спасибо за вашу работу здесь, @featheredtoast! Возможно ли установить дополнительные плагины в образ discourse/discourse? Как выглядит процесс для этого?