codedeploy afterinstall hook中的错误?

时间:2016-07-18 08:13:18

标签: amazon-web-services deployment composer-php symfony aws-code-deploy

我们为symfony3应用程序设置了自动缩放功能。我们使用aws codedeploy来部署到自动扩展实例。

我的appspec.yml文件

version: 0.0
os: linux
files:
  - source: /
    destination: /usr/share/nginx/<some_dir>
hooks:
  AfterInstall:
    - location: post_deploy.sh
      timeout: 180
      runas: ubuntu

post_deploy.sh

#!/bin/bash
doc_root=/usr/share/nginx/<some_dir>
current_dir=$PWD
cd $doc_root
sudo -E composer install --no-interaction --no-dev --optimize-autoloader
cd $current_dir

还导出了parameters.yml文件的环境变量

当我们部署修订版时,codedeploy成功部署。但是当我通过浏览器访问我的应用程序时,nginx错误日志说:

PHP Fatal error:  Uncaught exception 'Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException' with message 'You have requested a non-existent parameter "database.host". Did you mean one of these: "database_host", "database_port"?

奇怪的是,当我通过登录到我的服务器手动运行post_deploy.sh脚本时,它执行得很好,之后没有错误。 我不知道如何处理它。

2 个答案:

答案 0 :(得分:0)

尝试将database.host更改为database_host。消息中指出了什么。

答案 1 :(得分:0)

尽管-E选项,

codedeploy仍然不保留env var。 所以我传递了env var in命令本身,就像这个

sudo SYMFONY_ENV=$SYMFONY_ENV SYMFONY__DATABASE__NAME=$SYMFONY__DATABASE__NAME SYMFONY__DATABASE__USER=$SYMFONY__DATABASE__USER SYMFONY__DATABASE__HOST=$SYMFONY__DATABASE__HOST SYMFONY__DATABASE__PORT=$SYMFONY__DATABASE__PORT SYMFONY__DATABASE__PASSWORD=$SYMFONY__DATABASE__PASSWORD COMPOSER_HOME=$COMPOSER_HOME composer install --no-interaction --no-dev --optimize-autoloader

为我工作。