Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run `npm install` in Amazon Elastic Beanstalk with .ebextensions

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?

like image 672
Harrison Avatar asked Nov 05 '15 19:11

Harrison


1 Answers

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

UPD: in some cases yum may fail to install nodejs from the repo, as there are rare cases when repo URLs aren't available, or downloads fail. In such a case the whole build will fail, as npm install won't succeed. The solution is to use custom AWS AMIs (Amazon Machine Images) with nodejs pre-installed on them: documentation.

like image 103
Kirk Hammett Avatar answered Nov 14 '22 22:11

Kirk Hammett