4

У меня проблема с командой execute после развертывания, у меня есть проект и скрипт node.js, этот скрипт использует некоторый bin из node_modules, если я пишу свою команду для скрипта в .ebextensions/.config he выполнить до npm установки и возврата ошибки ("node_modules/.bin/some": No such file or directory). Как я могу выполнить команду после развертывания. Благодарю.Выполнение команды после развертывания AWS Beanstalk

ответ

7

я нашел следующее решение

я добавить к Beanstalk CONFIG следующую команду:

commands: 
    create_post_dir: 
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post" 
    ignoreErrors: true 
files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/some_job.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     /var/app/current 
     npm run some_script 

Эта команда создает (если не существует) папка для пост-крючками скриптов и добавляет Баш скрипт. Скрипты в этих папках выполняются только после установки npm, что очень важно для моей проблемы.

Благодаря этому парню http://junkheap.net/blog/2013/05/20/elastic-beanstalk-post-deployment-scripts/

+2

Большое спасибо. У меня была такая же проблема с PHP-скриптом. Оно работало завораживающе. – Strabek

+2

Я получаю «npm: command not found» – Pawel

+0

@Pawel Вы когда-нибудь выяснили команду npm: command не нашли? – daxiang28

-1

Если вы читаете AWS ebextensions documentation, они упоминают о выполнении, в частности, где упоминается, что все команды выполняются до развертывания версии приложения.

«Вы можете использовать клавишу container_commands для выполнения команд для контейнера. Команды в container_commands обрабатываются в алфавитном порядке по имени. Они работают после приложения и веб- сервере были установлены и приложение файл версии был удален , но до развертывания версии приложения ».

Если вы разворачиваете его во второй раз, он должен работать; это потому, что ваше приложение уже распаковано. Это, однако, не является рабочим решением, потому что каждый новый экземпляр, который генерируется, будет ошибочным.

+1

К сожалению, нет. Becouse EB создайте временную папку, которая пытается установить приложение, если delpoy done EB перемещает это в/var/app ..... – siavolt

1

создать файл с именем .ebextensions/post_actions.config:

container_commands: 
<name of container_command>: 
    command: "<command to run>" 

это будет выполняться после был извлечен код, но до того как он был запущен.

+1

Спасибо, но мне нужно после его запуска (после развертывания). – siavolt