AWS Elastic Beanstalk ebextension не выполняет сценарий оболочки для использования npm install
Мне нужно установить отдельную инфраструктуру, которую я создал внутри моего приложения js node, работающего на эластичном beanstalk.
Я попытался поместить сценарии в мой основной файл package.json, но я получаю ошибки разрешения при его установке.
Поэтому я создал файл конфигурации и попытался запустить npm install из container_commands. Он не хотел запускать npm, так как он сказал, что команда отсутствует. Я попытался добавить правильные переменные пути среды в npm, которые работают, когда выполняются вручную через ssh, но он выдал ту же ошибку, что и не смог найти команду npm.
Итак, наконец.
Я создал скрипт bash через ebextension, которое устанавливает приложение, и запускаю этот скрипт из команды container_commands.
Сценарий создается правильно, но никогда не запускается. Если я ssh в экземпляры и выполнить его вручную, как sudo, он работает. Приложение разворачивается без ошибок, но кажется, что оно никогда не выполняет скрипт, я знаю это, потому что папки node_modules никогда не создаются.
Я не уверен, где искать ошибки для этого в моих журналах, и когда я попытался, я не нашел ничего полезного.
Вот мое возбуждение:
files:
"/tmp/install_application.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
export PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
eval "cd /var/app/current/library/server && npm install --production"
eval "cd /var/app/current && npm install --production"
container_commands:
00-install-application:
command: "sh /tmp/install_application.sh"
1 ответ
Мне удалось найти ответ на это. У меня было несколько проблем со сценарием.
- Старые скрипты все еще были в папках хуков от предыдущих попыток.
- Я запускал сценарий еще до того, как проект был распакован, или запускал сценарий после развертывания проекта.
- Я устанавливал модули в конечный пункт назначения /var/app/current, который перезаписывался после установки развернутого приложения.
Вот последний сценарий.
files:
"/opt/elasticbeanstalk/hooks/appdeploy/enact/00-install-application.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
PATH=$PATH:`ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin
cd "/tmp/deployment/application/library/server"
npm install --production