Пожалуйста, несите меня. Довольно новый для Докера.Запустите команду миграции базы данных при развертывании контейнера Docker в AWS
Я устанавливаю контейнеры Докера (отдельно) в реестр AWS EC2 с использованием CodeDeploy. В развертывании, следующая команда выполняется после установки некоторых переменных окружения и т.д.:
exec docker run -d ${PORTS} -v cache-${CACHE_VOLUME} --env-file $(dirname $0)/docker.env --tty "${IMAGE}:${TAG}"
Контейнер запускает файл, расположенный и маркированный в EC2 Container Service. На данный момент проблем нет.
Поскольку это PHP-приложения (в частности, приложение Symfony2), который обычно должен был бы выполнить следующую команду для выполнения миграции базы данных по развертыванию:
php app/console doctrine:migrations:migrate --no-interaction
Теперь, есть ли запускать эту команду во время " docker run ... "при сохранении контейнера, или мне нужно запустить другой контейнер специально для этой команды?
Большое спасибо!
Но как может ли скрипт развертывания узнать [containerId]? Или вы запускаете его вручную? – frigg
Я делаю это вручную. Но я думаю, что вы могли бы сделать «докер ps» в вашем сценарии развертывания и grep containerId, который вы бы применили к ... –
Это смешивает два возможных решения. 'docker-compose run [service]' запустит новый контейнер докеров. Вы также можете использовать 'docker ps', чтобы узнать идентификатор контейнера работающего php-контейнера и использовать' docker exec [containerID] [migrationCommand] 'для запуска команды внутри запущенного контейнера вместо того, чтобы откручивать новую. – eawenden