Оказывается, это неправильный способ использования эластичного бобового стебля. Приложение будет работать, но это будет скорее взлом, чем правильное решение.
Я развертываю приложение PHP, используя следующую настройку:
Сценарий PHP, который должен выполняться в обработчике post deploy в качестве фоновой задачи, никогда не прекращает свою работу. Это эффективно забивает трубопровод.
Снимок экрана: конвейер работает вечно (остановлен специально)
Конвейер Bitbucket, проверяющий состояние здоровья приложения AWS Elastic Beanstalk
Вот код файла конфигурации .ebextensions.
container_commands:
01-create_post_hook:
command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/start.sh":
mode: "000770"
owner: root
group: root
content: | #!/bin/bash
echo "--------Starting Runner------------"
php /var/app/current/runner.php &
Поскольку сценарий, который должен запускаться в фоновом режиме, на самом деле никогда не завершается, состояние работоспособности приложения всегда остается на уровне «info». Это проблема, поскольку для успешного развертывания приложения требуется состояние «ОК».
Состояние приложения зависло на "Информация", а не на "ОК"
Подобные вопросы я нашел в Интернете:
https://forums.aws.amazon.com/thread.jspa?threadID=301439&tstart=0 https://forums.aws.amazon.com/thread.jspa?messageID=425130񧲪
Обычно для этого мы используем инструменты CI / CD (непрерывная интеграция / непрерывная доставка), такие как Jenkins, CircleCI или Bamboo. Они могут получить веб-перехватчик от Bitbucket, который запускает любые задачи, такие как вызов PHP-скрипта, запуск bash-скрипта, запуск raketask и т. Д.