Выполните команду миграции базы данных при развертывании контейнера 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" предписывает доктрине не создавать исключение, когда делать нечего...