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 ответ

Мне удалось найти ответ на это. У меня было несколько проблем со сценарием.

  1. Старые скрипты все еще были в папках хуков от предыдущих попыток.
  2. Я запускал сценарий еще до того, как проект был распакован, или запускал сценарий после развертывания проекта.
  3. Я устанавливал модули в конечный пункт назначения /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
Другие вопросы по тегам