Запустить PHP-скрипт в качестве фонового процесса в AWS Beanstalk Post Install Hook

UDPATE

Оказывается, это неправильный способ использования эластичного beanstalk . Приложение будет запущено, но это будет скорее взлом, чем правильное решение.

Вместо этого используйте EC2.


Я развертываю приложение PHP, используя следующую настройку:

Настройка

  1. Конвейер Bitbucket создает приложение с помощью composer и создает готовый zip-файл.
  2. Bitbucket AWS Elastic Beanstalk развертывает код в приложении AWS Elastic Beanstalk.
  3. Перехватчик после установки в opt / elasticbeanstalk / hooks / appdeploy / post действительно запускает сценарий PHP после развертывания.

Проблема

Сценарий PHP, который должен выполняться на обработчике после развертывания как фоновая задача, никогда не перестает работать. Это эффективно забивает трубопровод.

Снимок экрана, на котором конвейер работает вечно (остановлен намеренно)

Конвейер 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 &

Вопросы

  • Правильно ли сконфигурирован сценарий bash для работы в фоновом режиме ?
  • Есть ли другой (рекомендуемый) способ выполнить сценарий после обновления приложения?

Примечания

Поскольку сценарий, который должен выполняться в фоновом режиме, на самом деле никогда не завершается, состояние работоспособности приложения всегда остается на уровне «информация». Это проблема, поскольку для успешного развертывания приложения требуется состояние «ОК».

Работоспособность приложения застряла на «Информация», а не на «ОК»

Подобные вопросы я нашел в Интернете:

https://forums.aws.amazon.com/thread.jspa?threadID=301439&tstart = 0 https://forums.aws.amazon.com/thread.jspa?messageID=425130񧲪

0
задан 3 May 2019 в 18:55
1 ответ

Обычно для этого мы используем инструменты CI / CD (непрерывная интеграция / непрерывная доставка), такие как Jenkins, CircleCI или Bamboo. Они могут получить веб-перехватчик от Bitbucket, который запускает любые задачи, такие как вызов PHP-скрипта, запуск bash-скрипта, запуск raketask и т. Д.

0
ответ дан 21 January 2020 в 15:31

Теги

Похожие вопросы