AWS Elastic Beanstalk部署顺序

时间:2016-11-28 01:18:25

标签: php amazon-web-services amazon-elastic-beanstalk ebcli

我正在将代码部署到单实例Web服务器AWS EB环境,该环境将配置/更新我连接的RDS数据库。我有一个调用部署代码的.ebextensions文件:

---
container_commands:
  01deploydb:
    command: /var/www/html/php/cli/deploy-db.php
    leader_only: true

在同一部署中,我将deploy-db.php文件从一个目录中删除到/cli/。在部署时,我得到ERROR: [Instance: i-*****] Command failed on instance. Return code: 127 Output: /bin/sh: /var/www/html/php/cli/deploy-db.php: No such file or directory. container_command 01deploydb in .ebextensions/01_db.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

如果我部署了不包含该命令的版本,那么部署包含该命令的第二个更新,则没有错误。但是,添加命令及其同时调用的文件会产生错误。之前使用不同的命令/文件发生了类似的序列。

我的问题是:AWS是否有关于AWS更新环境的文档顺序/顺序?我原本期望我的新版本在container_commands之前已完全部署(并安装了.php文件)被称为。

1 个答案:

答案 0 :(得分:2)

命令:部分在项目文件到位之前运行。您可以在此处安装服务器软件包。

在将文件放入其最终目标之前,container_commands:部分在暂存目录中运行。如果需要,您可以在此处修改文件。当前路径是此暂存目录,因此您可以像这样运行它(我可能会将app目录弄错,也许它应该是php/cli/deploy-db.php

container_commands:
  01deploydb:
    command: cli/deploy-db.php
    leader_only: true

上述参考:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

您还可以运行后部署脚本。这没有很好的记录(至少它没有)。你可以做这样的事情(虽然它不会是领导者,但你可以通过container_commands:将文件放在这个目录中):

files:
    "/opt/elasticbeanstalk/hooks/appdeploy/post/99_deploy.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/usr/bin/env bash
            /var/www/html/php/cli/deploy-db.php
相关问题