Por favor, tenga paciencia conmigo. Bastante nuevo en Docker.
Estoy implementando contenedores Docker (separados) en un registro de AWS EC2 mediante CodeDeploy . En la implementación, el siguiente comando se ejecuta después de configurar algunas variables ambientales, etc.:
exec docker run -d ${PORTS} -v cache-${CACHE_VOLUME} --env-file $(dirname $0)/docker.env --tty "${IMAGE}:${TAG}"El contenedor ejecuta una imagen ubicada y etiquetada en EC2 Container Service. No hay problemas hasta ahora.
Dado que esta es una aplicación PHP (específicamente una aplicación Symfony2), normalmente necesitaría ejecutar el siguiente comando para ejecutar migraciones de bases de datos en la implementación:
php app/console doctrine:migrations:migrate --no-interactionAhora, ¿hay alguno para ejecutar este comando durante la "ejecución de la ventana acoplable..." mientras se mantiene el contenedor en ejecución, o necesito ejecutar otro contenedor específicamente para este comando?
¡Muchas gracias!
Necesitas crear un punto de entrada . Este script se ejecuta al inicio del contenedor.
archivo entrypoint.sh:
#create or update db ./waitforit.sh <DB_HOST>:<DP_PORT> -t 30 php app/console doctrine:migrations:execute # start apache apache2-foregroundespérelo , es un script esperado cuando se inicia la base de datos
Solo dejo esto aquí para el próximo que busque esto... ;-)
Cuando se usa una versión reciente de Doctrine, hay un parámetro bastante útil para esto:
php bin/console doctrine:migrations:migrate --no-interaction --allow-no-migrationEl parámetro "no permitir migración" indica a la doctrina que no lance una excepción, cuando no hay nada que hacer...
hago lo siguiente:
docker-compose exec [containerID] ./app/console migrations:migrate --no-interaction