2016-11-28 4 views
0

Я развертываю код в среде веб-сервера AWS одного экземпляра, которая будет предоставлять/обновлять мою подключенную базу данных RDS. У меня есть .ebextensions файл, который вызывает код развертывания:AWS Elastic Beanstalk Deployment Order

--- 
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 обновляет среду? Я бы ожидал, что моя новая версия будет полностью развернута (и файл .php) до вызова команд container_commands.

ответ

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