Как запустить скрипт npm только один раз при использовании docker-compose? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь выяснить, как запустить скрипт npm, используя docker-compose, но я хочу запустить его только один раз (если том данных еще не был создан - например, ОЧЕНЬ в первый раз, когда я docker-compose build && docker-compose up) ).

Сценарий использует Sequelize CLI для запуска начального файла для базы данных, но если он будет выполнен более одного раза, в моей базе данных произойдет ошибка из-за нарушения ограничения дублирующегося ключа.

Это потому, что я использую том данных (поэтому, если он был запущен ранее, он уже сохранен).

О, и это нужно запустить после запуска другого сценария (сценарий миграции).

Итак по порядку:

  1. npm run db:migrate <- это может выполняться каждый раз, когда <code>docker-compose up запускается

  2. npm run db:seed <- это может выполняться только один раз, пока постоянный том не был создан </p>

  3. теперь могут запускаться любые другие сценарии (для запуска моего сервера)

Существуют ли подобные концепции, которые можно использовать с docker-compose?

1 Ответ

0 голосов
/ 26 апреля 2019

Какую базу данных вы использовали?

Во многих случаях (например, maraidb , mongodb ) вы можете использовать каталог /docker-entrypoint-initdb.d Каждый смонтированный файл будет выполняться в алфавитном порядке при запуске контейнера.

Чтобы выполнять свою работу только при первом запуске первой части вашего скрипта, необходимо проверить, существует ли база данных или нет.

РЕДАКТИРОВАТЬ: Посмотрите на доку, какие типы файлов являются вспомогательными..sql и .js Шоул работает в большинстве стран, но для npm я не уверен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...