У меня проблема с командой execute после развертывания, у меня есть проект и скрипт node.js, этот скрипт использует некоторый bin из node_modules, если я пишу свою команду для скрипта в .ebextensions/.config he выполнить до npm установки и возврата ошибки ("node_modules/.bin/some": No such file or directory
). Как я могу выполнить команду после развертывания. Благодарю.Выполнение команды после развертывания AWS Beanstalk
ответ
я нашел следующее решение
я добавить к 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/
Если вы читаете AWS ebextensions documentation, они упоминают о выполнении, в частности, где упоминается, что все команды выполняются до развертывания версии приложения.
«Вы можете использовать клавишу container_commands для выполнения команд для контейнера. Команды в container_commands обрабатываются в алфавитном порядке по имени. Они работают после приложения и веб- сервере были установлены и приложение файл версии был удален , но до развертывания версии приложения ».
Если вы разворачиваете его во второй раз, он должен работать; это потому, что ваше приложение уже распаковано. Это, однако, не является рабочим решением, потому что каждый новый экземпляр, который генерируется, будет ошибочным.
К сожалению, нет. Becouse EB создайте временную папку, которая пытается установить приложение, если delpoy done EB перемещает это в/var/app ..... – siavolt
создать файл с именем .ebextensions/post_actions.config
:
container_commands:
<name of container_command>:
command: "<command to run>"
это будет выполняться после был извлечен код, но до того как он был запущен.
Спасибо, но мне нужно после его запуска (после развертывания). – siavolt
Большое спасибо. У меня была такая же проблема с PHP-скриптом. Оно работало завораживающе. – Strabek
Я получаю «npm: command not found» – Pawel
@Pawel Вы когда-нибудь выяснили команду npm: command не нашли? – daxiang28