Выполните команду миграции базы данных при развертывании контейнера Docker в AWS

пожалуйста, медведь со мной. Довольно новое для Докера.

Я развертываю контейнеры Docker (отдельно) в реестр AWS EC2 с помощью codedeploy не зависит. При развертывании после установки некоторых переменных среды и т. д. запускается следующая команда:

exec docker run -d ${PORTS} -v cache-${CACHE_VOLUME} --env-file $(dirname )/docker.env --tty "${IMAGE}:${TAG}"

контейнер запускает изображение, расположенное и помеченное в Службе контейнеров EC2. Пока никаких проблем.

поскольку это приложение PHP (в частности, приложение Symfony2), мне обычно нужно было бы выпустить следующая команда для выполнения миграции базы данных при развертывании:

 php app/console doctrine:migrations:migrate --no-interaction

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

большое спасибо!

3 ответов


вам нужно создать entrypoint. Этот сценарий запускается при запуске контейнера.

entrypoint.sh файл:

#create or update db
./waitforit.sh <DB_HOST>:<DP_PORT> -t 30
php app/console doctrine:migrations:execute 

# start apache
apache2-foreground

ждать это скрипт ждал, когда база данных запускается


Я делаю следующее:

docker-compose exec [containerID] ./app/console migrations:migrate --no-interaction

просто оставив это здесь для следующего, который ищет это... ;-)

при использовании последней версии доктрины для этого есть довольно удобный параметр:

php bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration

параметр "allow-no-migration" предписывает доктрине не создавать исключение, когда делать нечего...