更新

更新

更新

事实证明,这是使用弹性豆茎的错误方法。应用程序可以运行,但这只是一个黑客行为,而不是一个正确的解决方案。

改用 EC2。


我正在使用以下设置部署 PHP 应用程序:

设置

  1. Bitbucket 管道使用作曲家构建应用程序并创建完成的 zip 文件。
  2. Bitbucket AWS Elastic Beanstalk 将代码部署到 AWS Elastic Beanstalk 应用程序。
  3. 安装后挂钩选择/elasticbeanstalk/钩子/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粪

答案1

通常,我们使用 CI/CD(持续集成/持续交付)工具(例如 Jenkins、CircleCI 或 Bamboo)来完成这些工作。它们可以从 Bitbucket 获取 webhook,从而触发任何类型的任务,例如调用 PHP 脚本、运行 bash 脚本、运行 raketask 等。

相关内容