Вы не можете просто «упаковать» директорию /var/discourse с помощью tar, переместить её на другой сервер, распаковать и запустить приложение Discourse.
Одна из основных причин заключается в том, что при сборке / инициализации Discourse (загрузчик, если я не ошибаюсь) проверяет наличие базового контейнера Discourse (образа), загружает базовый Docker-образ Discourse (если его нет) и запускает этот базовый образ в контейнере.
После этого обновления из git процесс сборки создаёт ещё один Docker-образ (образ приложения).
Оба этих Docker-образа (базовый образ и образ приложения) не находятся внутри /var/discourse, поэтому упаковка /var/discourse через tar является лишь частичным «решением» (используя этот термин условно).
Эти образы Docker для Discourse создаются как образы Docker и являются частью экосистемы Docker; они не «живут» в /var/discourse, а создаются там, а затем перемещаются в Docker как образы.
Возможно, отредактировать файл конфигурации контейнера (YAML) и собрать всё заново с нуля, но более стандартный способ — сохранить:
- файл(ы) конфигурации контейнера (YAML)
- полную резервную копию с загрузками
затем отредактировать файл конфигурации контейнера, клонировать репозиторий discourse-docker и выполнить сборку заново.
После этого восстановить полную резервную копию, включая загрузку файлов (через командную строку внутри контейнера).
Использование GitHub в качестве репозитория — более чистое решение, чем старый «unix-подобный» способ «упаковки всего этого дела» и «перемещения всего этого дела» на другой сервер. Однако даже при использовании «старого unix-метода» этот подход часто не обеспечивает полного решения, поскольку в системе часто есть общие библиотеки в пользовательских директориях и многое другое, что не входит в дистрибутивный каталог, а также файлы в /etc, которые не находятся в корневом каталоге дистрибутива и т.д.
Поэтому даже в большинстве современных систем Linux мы используем apt (например, в Ubuntu) для получения репозитория. В случае с Docker для Discourse вы загружаете (и собираете) репозиторий discourse-docker для настройки базового контейнера и другой репозиторий Discourse для сборки приложения. Таким образом, /var/discourse является «местом для сборки» (образов) и «местом для хранения» (данных, резервных копий, публичных статических файлов и т.д.).
Надеюсь, это краткое изложение было хоть немного полезным.