Сборка образа без обращения к базе данных

Я хотел сделать то же самое, что и вы: мы запускаем Discourse на Amazon ECS, поэтому нам нужно было иметь возможность собирать только веб-образ и загружать его в реестр. Мне не хотелось взламывать процесс сборки Discourse, так как мы хотим максимально приближаться к официально поддерживаемой установке.

Вместо этого мы используем обычный скрипт launcher для создания настройки из двух контейнеров на локальной машине, но игнорируем контейнер данных и загружаем веб-контейнер в реестр. Во время выполнения мы переопределяем детали подключения к Postgres и Redis через переменные окружения.

Развёртывание нового образа состоит из трёх шагов:

  1. Выполните безопасные предварительные миграции. Запустите в ECS эту команду (с новым образом):

     SKIP_POST_DEPLOYMENT_MIGRATIONS=1 rake db:migrate
    
  2. Разверните новый образ. Обновите сервис ECS.

  3. Выполните пост-миграции. Запустите в ECS эту команду:

     SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
    

Запуск локального контейнера данных во время сборки образа, вероятно, расточителен, но это позволяет использовать стандартный файл web.template.yml, не беспокоясь о том, какие его части пытаются подключиться к базе данных или Redis.