2016-11-28 218 views
0

我将代码部署到将提供/更新连接的RDS数据库的单实例Web服务器AWS EB环境。我有一个要求部署代码.ebextensions文件:AWS Elastic Beanstalk部署顺序

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

同部署,我放弃了部署-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文件)。

回答

2

命令:部分在放置项目文件之前运行。例如,您可以在这里安装服务器软件包。

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 
+0

感谢@Gustaf! – Calteran

相关问题