问题
I want to deploy my PHP app in a Amazon Elastic Beanstalk with eb deploy
command. But my app use gulp to concat and minify scss and js.
So I tried these commands to in the file .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"
But in the end I receive this error
[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.
I'm not sure but it appears that npm install
receive an error from one package that could be ignored but it is dispatching the EB error and stopping the whole process.
I'm running with this machine: 64bit Amazon Linux 2015.09 v2.0.4 running PHP 5.6
Does anyone know how we can fix this?
回答1:
Until now, I have this ugly solution, but it works. I created this script inside package.json that do the hard job in sequence. It create a new branch and commit the compiled files before deploy it to 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
回答2:
packages:
yum:
git: []
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/03_npm_install.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
cd $EB_APP_STAGING_DIR
npm install bower
npm install
./node_modules/bower/bin/bower install --allow-root --config.interactive=false
./node_modules/grunt-cli/bin/grunt dust
回答3:
Here is what worked for me:
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
来源:https://stackoverflow.com/questions/33552936/how-to-run-npm-install-in-amazon-elastic-beanstalk-with-ebextensions