Bootstrap app container in 2 steps

@pfaffman Если вы посмотрите на внесённые мной изменения, то увидите, что я не менял инструкции веб-шаблона в discourse_docker, а лишь разделил их на три файла. Именно это я и просил: один файл содержит инструкции, не зависящие от окружения, например установку Ruby-гемов, репозиториев Discourse и плагинов и т. д.; второй выполняет некоторые проверки; третий — действия, специфичные для окружения, такие как миграция базы данных и предкомпиляция ассетов.

Я считаю, что сложность заключается в следующем: при добавлении чего-либо в эти файлы команде Discourse необходимо решать, зависит ли это от окружения (например, от данных в БД), и, исходя из этого, определять, в какой файл это следует включить.

Официальная установка будет работать так же, как и сейчас, за исключением того, что в файл app.yml будут включены три шаблона (либо файл templates/web.template.yml будет включать эти три шаблона, если это возможно; и в этом случае для пользователя ничего не изменится), вместо выполнения в несколько шагов (это не даст преимуществ двухэтапной установки, но будет работать точно так же, как сейчас, то есть не будет нарушающих изменений).

Я понимаю, что задачи системного администратора могут быть очень сложными, но я постарался сделать всё максимально просто, учитывая текущий подход, чтобы избежать излишней сложности (поэтому я не упоминал k8s, разделение сервисов в файле docker-compose или подобные решения, так как они потребовали бы серьёзных изменений; вместо этого я опирался на то, как это реализовано в официальной установке).

5 лайков