Как да стартирате `npm install` в Amazon Elastic Beanstalk с .ebextensions

Искам да разположа своето PHP приложение в Amazon Elastic Beanstalk с команда eb deploy. Но моето приложение използва gulp за concat и минимизиране на scss и js.

Така че опитах тези команди във файла .ebextensios/03npm.config

commands:
  01-install-node:
    command: "yum install nodejs npm --enablerepo=epel -y"

container_commands:
  01-install-dependencies:
    command: "npm install"
  02-build:
    command: "npm run build"

Но в крайна сметка получавам тази грешка

[Instance: i-c7800103] Command failed on instance. Return code: 1 Output: (TRUNCATED)...ttps://registry.npmjs.org/acorn npm http 304 https://registry.npmjs.org/amdefine npm http 304 https://registry.npmjs.org/wrappy npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /var/app/ondeck/npm-debug.log npm ERR! not ok code 0. container_command 01-install-dependencies in .ebextensions/03npm.config failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

Не съм сигурен, но изглежда, че npm install получава грешка от един пакет, който може да бъде игнориран, но той изпраща EB грешката и спира целия процес.

Работя с тази машина: 64bit Amazon Linux 2015.09 v2.0.4 running PHP 5.6

Някой знае ли как можем да поправим това?


person Harrison    schedule 05.11.2015    source източник
comment
Изпитвам същия проблем с. почти идентичен .config файл в .ebextensions. Намерихте ли решение и ако да, бихте ли го споделили? Благодаря.   -  person Thomas    schedule 07.01.2016
comment
Публикувам решението си в отговора, за да го обясня по-добре   -  person Harrison    schedule 08.01.2016
comment
Вчера се сблъсках със същия проблем, но не харесах нито един от отговорите, намерих причината в регистрационните файлове. По-конкретно, искате да разгледате eb-activity.log и eb-commandprocessor.log, за да получите повече информация за тази грешка. Открих, че моята е нещо общо със самата ми инсталация на npm. Така че самият проблем не беше eb, поправих тази проста npm грешка и продължих след това. Надявам се тази информация да помогне на някого =)   -  person clodal    schedule 11.03.2017


Отговори (2)


Досега имам това грозно решение, но работи. Създадох този скрипт вътре в package.json, който върши трудната работа последователно. Той създава нов клон и предава компилираните файлове, преди да го разположи в EB

package.json

{
  "scripts": {
    "production": "node ./node_modules/gulp/bin/gulp.js --production",
    "deploy": "git checkout -b deploy && npm run production && git add . && git commit -m \"build\" && eb deploy && git checkout master && git branch -D deploy"
  }
}

.elasticbeanstalk/config.yml

branch-defaults:
  deploy:
    environment: NAME_OF_ENVIRONMENT
person Harrison    schedule 08.01.2016
comment
Благодаря за това. Всъщност в крайна сметка използвах Circle CI и Docker (тъй като опитът ми с AWS Node.js среди не е най-добрият). С помощта на Circle CI мога да разположа директно от Github. т.е. Circle CI взема най-новите push напр. master, след това изпълнява npm install и след това изгражда проекта в папка distribution, която след това се предава на EB. Използвайки .ebignore, мога да игнорирам всичко освен папката distribution и производствения сървър. Следователно това са единствените файлове, предадени на AWS EB. Оттам AWS EB създава Docker контейнер и го изпълнява за ~3-4 минути. - person Thomas; 09.01.2016

Ето какво проработи при мен:

packages:
    yum:
      git: []

commands:
    01_node_install:
        cwd: /tmp
        test: '[ ! -f /usr/bin/node ] && echo "node not installed"'
        command: 'yum install -y nodejs --enablerepo=epel'
    02_npm_install:
        cwd: /tmp
        test: '[ ! -f /usr/bin/npm ] && echo "npm not installed"'
        command: 'sudo rm -rf /usr/bin/npm | curl -L http://npmjs.org/install.sh | sh'
    03_node_update:
        cwd: /tmp
        test: '[ ! -f /usr/bin/n ] && echo "node not updated"'
        command: 'npm install -g n && n stable'

container_commands:
  # your container commands
person Kirk Hammett    schedule 24.08.2020
comment
Това е единственият вариант, който работи за мен. Благодаря! - person kevgathuku; 14.05.2021