Каков наилучший способ запустить миграцию или загрузить схему при первом запуске docker-compose? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть составная установка с двумя контейнерами, webapp и db.Было бы неплохо, если бы при первом запуске docker-compose up выполнялась миграция / схема в контейнере веб-приложения.Эти миграции не являются прямыми sql, поэтому я не могу поместить их в каталог db init (и они также не могут быть скриптами sh, так как им нужны зависимости, не установленные на db).

Есть ли лучший способ сделать это или лучше запустить его как отдельную команду?В идеале я бы хотел, чтобы docker-compose up была единственной командой, которую должен запускать кто-то вроде нового разработчика, чтобы вся композиция работала локально, если это возможно.

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете добавить другую службу, которая запускает контейнерные миграции на хосте db и сделать ее зависимой от службы db, а затем просто запустить docker-compose up -d migrate:

services:
  db: <some db stuff>

  migrate:
    <build/run your migration against the db container>
    depends_on:
     - "db"

Службы будут работать в фоновом режимеконтейнер migrate умрет, а контейнер db продолжит работать с примененными миграциями.

...