Вопрос по установке Docker

Сегодня я изучал доступные образы Docker для Discourse и у меня возникло несколько вопросов.

  1. В обоих образах указано, что в них устанавливается Discourse (это очевидно). Далее следует список шагов для запуска всего в работе, в основном настройка доменного имени и электронной почты.

Я запутался в вопросе базы данных. Нет шага по её настройке. Входит ли база данных PostgreSQL (или другая) в тот же образ? Redis тоже включён? Или это полностью опционально?

В списке компонентов образа Docker база данных не указана.

На работе я использую Docker для разработки, тестирования (staging) и production-среды. Наши контейнеры неизменяемы (immutable). Когда нужно обновить и выкатить новый образ, он забирает последний код из Git и запускается.

Мы никогда не вносим изменения непосредственно в контейнер, или, по крайней мере, не такие, которые должны сохраняться дольше, чем до следующего выката.

Когда мы хотим обновиться до новой версии, например, .NET, мы просто изменяем базовый образ и выкатываем его.

Читая об образе Docker для Discourse, я заметил, что изменения вносятся в содержимое образа, как при обычной установке. Изменения, внесённые в образ, должны сохраняться — так ли это?

Сначала я подумал, что всё хранится в базе данных, но тогда получается, что база данных находится внутри контейнера? Значит, изменения в базе данных тоже сохраняются?

Если это так, как мне гарантировать, что все изменения сохранятся, если я остановлю контейнер, а затем снова запущу его?

Второй и гораздо более важный вопрос: как это влияет на обновление до новой версии программного обеспечения форума?

Из того, что я прочитал, казалось, что внутри контейнера используются экземпляры для обновления самого себя. Я ожидал, что будет выкатываться новый образ с обновлениями, и всё будет работать.

В основном я привык относиться к образам Docker как к «скоту»: они умирают, их выкатывают заново, изменения в образе никогда не сохраняются.

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

Привет, @talkingBeat!

База данных подключена через том, расположенный вне контейнера Docker, поэтому данные сохраняются.

Надеюсь, это поможет.

Это имеет смысл.
Если Discourse выпустит новую версию, и я заменю файл docker на новый и запущу его, база данных останется на месте?

А как насчёт кастомизаций, которые изменяли файлы или добавляли/удаляли их?

Привет, @RockHopper, и добро пожаловать обратно!

Скрипт запуска Discourse делает всё это за вас; это полностью поддерживается командой meta здесь.

Надеюсь, это поможет.