更新
事实证明,这是使用弹性豆茎的错误方法。应用程序可以运行,但这只是一个黑客行为,而不是一个正确的解决方案。
改用 EC2。
我正在使用以下设置部署 PHP 应用程序:
设置
- Bitbucket 管道使用作曲家构建应用程序并创建完成的 zip 文件。
- Bitbucket AWS Elastic Beanstalk 将代码部署到 AWS Elastic Beanstalk 应用程序。
- 安装后挂钩选择/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 等。