Выполнить команду в контейнере для Linux во время выпуска конвейера Azure Devops - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время я развертываю свой образ докера в AppService для Linux из AzureDevops.Я хочу выполнить некоторые миграции до того, как контейнер станет полностью доступным.

Миграции db выполняются путем вызова команды cli в моем контейнере.Как я могу добиться этого с помощью конвейера DevOps?

  1. Есть ли способ SSH к определенному не полностью развернутому контейнеру?
  2. Есть ли способ запуститьКоманда cli без настройки SSH?
  3. Есть ли другой рекомендуемый способ миграции / запуска некоторых сценариев перед тем, как сделать контейнер доступным?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Полагаю, у вас есть 2 варианта:

  1. запустить какой-нибудь сценарий инициализации, который выполняет миграцию, а затем запускает веб-сервер \ что вы обрабатываете, что фактически выполняет работу
  2. изменение entrypoint \ command, которую контейнер запускает по умолчанию, поэтому он делает это самостоятельно ( ссылка на файл Dockerfile ).

примерно так:

RUN /bin/bash -c 'run migrations; run payload'
0 голосов
/ 04 февраля 2019

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

#!/bin/bash

set -e

if [[ -n $MIGRATION_ONSTART ]]; then
    ( su -s /bin/bash -c "/var/www/bin/console migration:continue" www-data &)
fi

exec "$@"
...