ошибка в хуке codedeploy после установки?

У нас настроено автомасштабирование для нашего приложения 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 вручную, войдя на свой сервер, он выполняется хорошо, и впоследствии никаких ошибок. Я не знаю, как с этим справиться.


person Prem Sompura    schedule 18.07.2016    source источник


Ответы (2)


Попробуйте изменить базу данных.хост на базу данных_хост. то, что указано в сообщении.

person Soufiene    schedule 18.07.2016
comment
это потому, что sudo не сохраняет env var, вот почему -E если вы запустите sudo -E composer install --no-interaction --no-dev --optimize-autoloader, она будет успешной, и если вы запустите эту команду без опции -E, она выдаст указанную ошибку исключения - person Prem Sompura; 18.07.2016

codedeploy не сохраняет env var, несмотря на параметр -E. Итак, я передаю env var в самой команде, вот так

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

работал на меня.

person Prem Sompura    schedule 19.07.2016