Intereting Posts
Нечеткая проблема зависимости между сверстниками при запуске узла в докере Недопустимый IP-адрес в дополнительном хосте: "" + Не удалось запрограммировать цепочку FILTER: сбой iptables После создания изображения докеров, как я могу запустить изображение без нажатия на докер-концентратор? docker, nodejs: node not found error Подключение к контейнерам IP-адрес невозможно в Docker для Windows Как контролировать несколько контейнеров докеров на одном и том же хосте, используя topbeat? Как отправить STDIN в процесс докеров docker запускает python из контейнера Ошибка PhpStorm с томами докеров: «Виртуальные папки VirtualBox должны быть настроены в облачных настройках Docker» Docker Cloud «Принесите свой собственный рой» проблемы с прерывистым подключением Все статусы контейнера Docker? AWS ec2 + Дженкинс мастер на докере рой агент curl: (7) Не удалось подключиться к порту 172.17.0.8 80: соединение отклонено Кубернеты заполняются базовым изображением Контейнер Docker имеет проблемы с монтажом с Jenkins

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

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

Я развертываю контейнеры Docker (отдельно) в реестр 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 …» при сохранении контейнера или мне нужно запустить другой контейнер специально для этой команды?

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

Вам нужно создать точку входа . Это запуск скрипта при запуске контейнера.

Файл 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 

Просто оставив это здесь для следующего, который ищет это … 😉

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

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

Параметр «allow-no-migration» инструктирует доктрину не генерировать исключение, когда нечего делать …