【问题标题】:AWS Elastic Beanstalk Deployment OrderAWS Elastic Beanstalk 部署顺序
【发布时间】:2017-04-11 16:15:04
【问题描述】:

我正在将代码部署到单实例 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 如何更新环境是否有记录的顺序/顺序? 我原以为我的新版本会在 container_commands 之前完全部署(并安装 .php 文件)被调用。

【问题讨论】:

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


    【解决方案1】:

    commands: 部分在项目文件就位之前运行。例如,您可以在此处安装服务器软件包。

    container_commands: 部分在文件放入最终目的地之前在暂存目录中运行。如果需要,您可以在此处修改文件。当前路径是这个暂存目录,所以你可以这样运行它(我可能弄错了应用程序目录,也许它应该是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
    

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2020-08-02
      • 2014-12-25
      • 2015-12-15
      • 2014-05-26
      • 1970-01-01
      • 2015-07-28
      • 2019-11-22
      • 2020-08-14
      相关资源
      最近更新 更多