Сегодня я изучал доступные образы Docker для Discourse и у меня возникло несколько вопросов.
- В обоих образах указано, что в них устанавливается Discourse (это очевидно). Далее следует список шагов для запуска всего в работе, в основном настройка доменного имени и электронной почты.
Я запутался в вопросе базы данных. Нет шага по её настройке. Входит ли база данных PostgreSQL (или другая) в тот же образ? Redis тоже включён? Или это полностью опционально?
В списке компонентов образа Docker база данных не указана.
На работе я использую Docker для разработки, тестирования (staging) и production-среды. Наши контейнеры неизменяемы (immutable). Когда нужно обновить и выкатить новый образ, он забирает последний код из Git и запускается.
Мы никогда не вносим изменения непосредственно в контейнер, или, по крайней мере, не такие, которые должны сохраняться дольше, чем до следующего выката.
Когда мы хотим обновиться до новой версии, например, .NET, мы просто изменяем базовый образ и выкатываем его.
Читая об образе Docker для Discourse, я заметил, что изменения вносятся в содержимое образа, как при обычной установке. Изменения, внесённые в образ, должны сохраняться — так ли это?
Сначала я подумал, что всё хранится в базе данных, но тогда получается, что база данных находится внутри контейнера? Значит, изменения в базе данных тоже сохраняются?
Если это так, как мне гарантировать, что все изменения сохранятся, если я остановлю контейнер, а затем снова запущу его?
Второй и гораздо более важный вопрос: как это влияет на обновление до новой версии программного обеспечения форума?
Из того, что я прочитал, казалось, что внутри контейнера используются экземпляры для обновления самого себя. Я ожидал, что будет выкатываться новый образ с обновлениями, и всё будет работать.
В основном я привык относиться к образам Docker как к «скоту»: они умирают, их выкатывают заново, изменения в образе никогда не сохраняются.
Я не знал, что существуют образы Docker, в которых изменения сохраняются дольше, чем до следующей перезагрузки.