Как исполняемый скрипт bash может знать, когда завершен весь процесс в контейнере - PullRequest
0 голосов
/ 19 марта 2020

У меня есть сценарий bash, который я использую для создания контейнера docker, работающего на сервере БД MS SQL, и после его запуска я запускаю тесты для этой базы данных. вот так выглядит моя установка:

пакет. json

   {
   "scripts": {
       "test": "bash ./script.sh",
     },
   }

скрипт. sh

   ....
   docker-compose up -d db-service
   grunt test

docker -композиция. yml

   version: '2'
   services:
    db-service:
        build:
          context: ./scripts/db/.

Dockerfile

FROM XXX
COPY ./ .
CMD /bin/bash ./set-up.sh

И я запускаю свои тестовые формы npm run test.

Проблема с этим заключается в set-up.sh внутри контейнера Мне нужно скачать и сделать миграцию, которая занимает некоторое время. Однако, поскольку я запускаю его в автономном режиме, сценарий bash выполняет следующую строку (grunt test), и мои тесты не выполняются, поскольку БД еще не готова.

Моя группа- Помощь в этой проблеме заключается в добавлении sleep 10 перед grunt tests, чтобы убедиться, что DB-сервис настроен, но есть ли способ для сценария хоста узнать, выполнена ли вся миграция в контейнере? Или есть способ для сценария хоста bash узнать состояние контейнера?

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