Closed jonathanfoster closed 8 years ago
Hello Jonathan,
by design, the builds should never fail because of missing build tools, they are just optional dependencies. Can you help us what error message you get?
I see what you're saying. My container builds successfully, but the output is littered with error messages from node-gyp rebuild
. I saw the errors and assumed running the container would fail. Here's the output from my CI build.
$ docker build -t ellis-app:$VERSION .
Sending build context to Docker daemon 557.1 kB
Sending build context to Docker daemon 1.114 MB
Sending build context to Docker daemon 1.671 MB
Sending build context to Docker daemon 2.228 MB
Sending build context to Docker daemon 2.785 MB
Sending build context to Docker daemon 3.342 MB
Sending build context to Docker daemon 3.899 MB
Sending build context to Docker daemon 4.219 MB
Step 1 : FROM mhart/alpine-node:6.6.0
---> a437893a1943
Step 2 : RUN mkdir -p /usr/src/app
---> Using cache
---> 31517e792ad8
Step 3 : WORKDIR /usr/src/app
---> Using cache
---> f4a2f083084a
Step 4 : COPY package.json /usr/src/app/
---> ab74625c13fc
Removing intermediate container bb241eb3ad92
Step 5 : RUN npm install
---> Running in e484ae49b996
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
(node:5) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
npm WARN lifecycle v8-profiler@5.6.5~preinstall: cannot run in wd %s %s (wd=%s) v8-profiler@5.6.5 node -e 'process.exit(0)' /usr/src/app/node_modules/.staging/v8-profiler-bfaccea3
npm WARN prefer global jshint@2.9.3 should be installed with -g
> microtime@2.1.1 install /usr/src/app/node_modules/microtime
> node-gyp rebuild
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11
gyp ERR! stack at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:16)
gyp ERR! stack at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15)
gyp ERR! System Linux 4.4.0-31-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/microtime
gyp ERR! node -v v6.6.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN install:microtime@2.1.1 microtime@2.1.1 install: `node-gyp rebuild`
npm WARN install:microtime@2.1.1 Exit status 1
> event-loop-stats@1.0.0 install /usr/src/app/node_modules/event-loop-stats
> node-gyp rebuild
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11
gyp ERR! stack at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:16)
gyp ERR! stack at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15)
gyp ERR! System Linux 4.4.0-31-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/event-loop-stats
gyp ERR! node -v v6.6.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN install:event-loop-stats@1.0.0 event-loop-stats@1.0.0 install: `node-gyp rebuild`
npm WARN install:event-loop-stats@1.0.0 Exit status 1
> gc-stats@1.0.0 install /usr/src/app/node_modules/gc-stats
> node-gyp rebuild
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11
gyp ERR! stack at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:16)
gyp ERR! stack at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15)
gyp ERR! System Linux 4.4.0-31-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/gc-stats
gyp ERR! node -v v6.6.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN install:gc-stats@1.0.0 gc-stats@1.0.0 install: `node-gyp rebuild`
npm WARN install:gc-stats@1.0.0 Exit status 1
> v8-profiler@5.6.5 install /usr/src/app/node_modules/v8-profiler
> node-pre-gyp install --fallback-to-build
[v8-profiler] Success: "/usr/src/app/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64/profiler.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile
> @risingstack/trace@2.23.4 install /usr/src/app/node_modules/@risingstack/trace
> npm i v8-profiler --build-from-source || exit 0
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
(node:72) Warning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
npm WARN lifecycle v8-profiler@5.6.5~preinstall: cannot run in wd %s %s (wd=%s) v8-profiler@5.6.5 node -e 'process.exit(0)' /usr/src/app/node_modules/@risingstack/trace/node_modules/.staging/v8-profiler-fd6e9813
> v8-profiler@5.6.5 install /usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler
> node-pre-gyp install --fallback-to-build
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack at failNoPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:449:14)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:353:11
gyp ERR! stack at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:16)
gyp ERR! stack at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5
gyp ERR! stack at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15)
gyp ERR! System Linux 4.4.0-31-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64/profiler.node" "--module_name=profiler" "--module_path=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64"
gyp ERR! cwd /usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler
gyp ERR! node -v v6.6.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64/profiler.node --module_name=profiler --module_path=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/usr/src/app/node_modules/@risingstack/trace/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at emitTwo (events.js:106:13)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:191:7)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:877:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
node-pre-gyp ERR! System Linux 4.4.0-31-generic
node-pre-gyp ERR! command "/usr/bin/node" "/usr/src/app/node_modules/@risingstack/trace/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler
node-pre-gyp ERR! node -v v6.6.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.30
node-pre-gyp ERR! not ok
Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64/profiler.node --module_name=profiler --module_path=/usr/src/app/node_modules/@risingstack/trace/node_modules/v8-profiler/build/profiler/v5.6.5/node-v48-linux-x64' (1)
npm ERR! Linux 4.4.0-31-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i" "v8-profiler" "--build-from-source"
npm ERR! node v6.6.0
npm ERR! npm v3.10.7
npm ERR! code ELIFECYCLE
npm ERR! v8-profiler@5.6.5 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the v8-profiler@5.6.5 install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the v8-profiler package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs v8-profiler
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls v8-profiler
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /usr/src/app/node_modules/@risingstack/trace/npm-debug.log
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.14
npm WARN chai-webdriver-promised@4.0.3 requires a peer of chai@1.x but none was installed.
ellis@0.1.12 /usr/src/app
+-- @risingstack/trace@2.23.4
| +-- bl@1.1.2
| | `-- readable-stream@2.0.6
| | +-- process-nextick-args@1.0.7
| | `-- string_decoder@0.10.31
| +-- continuation-local-storage@3.1.7
| | +-- async-listener@0.6.3
| | | `-- shimmer@1.0.0
| | `-- emitter-listener@1.0.1
| +-- debug@2.2.0
| +-- https-proxy-agent@1.0.0
| | `-- agent-base@2.0.1
| | `-- semver@5.0.3
| +-- lodash.assign@4.0.9
| | +-- lodash.keys@4.2.0
| | `-- lodash.rest@4.0.5
| +-- lodash.defaults@4.0.1
| | `-- lodash.assigninwith@4.2.0
| +-- lodash.flatmap@4.3.0
| | +-- lodash._baseflatten@4.2.1
| | `-- lodash.map@4.6.0
| +-- lodash.isnumber@3.0.3
| +-- lodash.remove@4.5.0
| | +-- lodash._baseiteratee@4.7.0
| | | `-- lodash._stringtopath@4.8.0
| | | `-- lodash._basetostring@4.12.0
| | `-- lodash._basepullat@4.4.0
| | `-- lodash._baseslice@4.0.0
| +-- qs@6.2.0
| +-- semver@5.1.0
| +-- sync-request@3.0.1
| | +-- http-response-object@1.1.0
| | `-- then-request@2.2.0
| | +-- http-basic@2.5.1
| | `-- promise@7.1.1
| | `-- asap@2.0.5
| `-- v8-profiler@5.6.5
| +-- nan@2.4.0
| `-- node-pre-gyp@0.6.30
| +-- npmlog@4.0.0
| | +-- are-we-there-yet@1.1.2
| | | `-- delegates@1.0.0
| | +-- console-control-strings@1.1.0
| | +-- gauge@2.6.0
| | | +-- aproba@1.0.4
| | | +-- has-color@0.1.7
| | | +-- has-unicode@2.0.1
| | | +-- signal-exit@3.0.1
| | | `-- wide-align@1.1.0
| | `-- set-blocking@2.0.0
| +-- rc@1.1.6
| | +-- deep-extend@0.4.1
| | +-- ini@1.3.4
| | `-- minimist@1.2.0
| +-- semver@5.3.0
| +-- tar@2.2.1
| | +-- block-stream@0.0.9
| | `-- fstream@1.0.10
| `-- tar-pack@3.1.4
| +-- fstream-ignore@1.0.5
| +-- once@1.3.3
| +-- readable-stream@2.1.5
| | `-- buffer-shims@1.0.0
| `-- uid-number@0.0.6
+-- aws-sdk@2.6.7
| +-- buffer@4.9.1
| | +-- base64-js@1.2.0
| | +-- ieee754@1.1.8
| | `-- isarray@1.0.0
| +-- crypto-browserify@1.0.9
| +-- jmespath@0.15.0
| +-- querystring@0.2.0
| +-- sax@1.1.5
| +-- url@0.10.3
| | `-- punycode@1.3.2
| +-- xml2js@0.4.15
| `-- xmlbuilder@2.6.2
| `-- lodash@3.5.0
+-- babel-eslint@6.1.2
| +-- babel-traverse@6.16.0
| | +-- babel-code-frame@6.16.0
| | | `-- js-tokens@2.0.0
| | +-- babel-messages@6.8.0
| | +-- babel-runtime@6.11.6
| | | +-- core-js@2.4.1
| | | `-- regenerator-runtime@0.9.5
| | +-- globals@8.18.0
| | +-- invariant@2.2.1
| | | `-- loose-envify@1.2.0
| | | `-- js-tokens@1.0.3
| | `-- lodash@4.16.4
| +-- babel-types@6.16.0
| | +-- lodash@4.16.4
| | `-- to-fast-properties@1.0.2
| +-- babylon@6.11.4
| `-- lodash.pickby@4.6.0
+-- UNMET PEER DEPENDENCY chai@3.5.0
| +-- assertion-error@1.0.2
| +-- deep-eql@0.1.3
| | `-- type-detect@0.1.1
| `-- type-detect@1.0.0
+-- chai-webdriver-promised@4.0.3
| +-- q@1.1.2
| `-- webdriver-sizzle-promised@2.0.2
| +-- q@1.1.2
| `-- underscore@1.6.0
+-- compression@1.6.2
| +-- accepts@1.3.3
| | `-- negotiator@0.6.1
| +-- bytes@2.3.0
| +-- compressible@2.0.8
| | `-- mime-db@1.24.0
| +-- on-headers@1.0.1
| `-- vary@1.1.0
+-- cors@2.8.1
+-- crypto-js@3.1.7
+-- eslint@2.13.1
| +-- chalk@1.1.3
| | +-- ansi-styles@2.2.1
| | +-- escape-string-regexp@1.0.5
| | +-- has-ansi@2.0.0
| | +-- strip-ansi@3.0.1
| | `-- supports-color@2.0.0
| +-- concat-stream@1.5.2
| | +-- inherits@2.0.3
| | `-- typedarray@0.0.6
| +-- doctrine@1.4.0
| +-- es6-map@0.1.4
| | +-- d@0.1.1
| | +-- es5-ext@0.10.12
| | +-- es6-iterator@2.0.0
| | +-- es6-symbol@3.1.0
| | `-- event-emitter@0.3.4
| +-- escope@3.6.0
| | +-- es6-weak-map@2.0.1
| | `-- esrecurse@4.1.0
| | `-- estraverse@4.1.1
| +-- espree@3.3.2
| | +-- acorn@4.0.3
| | `-- acorn-jsx@3.0.1
| | `-- acorn@3.3.0
| +-- estraverse@4.2.0
| +-- esutils@2.0.2
| +-- file-entry-cache@1.3.1
| | `-- flat-cache@1.2.1
| | +-- circular-json@0.3.1
| | +-- del@2.2.2
| | | +-- globby@5.0.0
| | | | `-- array-union@1.0.2
| | | | `-- array-uniq@1.0.3
| | | +-- is-path-cwd@1.0.0
| | | +-- is-path-in-cwd@1.0.0
| | | | `-- is-path-inside@1.0.0
| | | `-- pify@2.3.0
| | +-- graceful-fs@4.1.9
| | `-- write@0.2.1
| +-- glob@7.1.1
| | +-- fs.realpath@1.0.0
| | `-- inflight@1.0.5
| +-- globals@9.12.0
| +-- ignore@3.1.5
| +-- imurmurhash@0.1.4
| +-- inquirer@0.12.0
| | +-- ansi-escapes@1.4.0
| | +-- ansi-regex@2.0.0
| | +-- cli-cursor@1.0.2
| | | `-- restore-cursor@1.0.1
| | | +-- exit-hook@1.1.1
| | | `-- onetime@1.1.0
| | +-- cli-width@2.1.0
| | +-- figures@1.7.0
| | +-- lodash@4.16.4
| | +-- readline2@1.0.1
| | | +-- code-point-at@1.0.1
| | | | `-- number-is-nan@1.0.1
| | | +-- is-fullwidth-code-point@1.0.0
| | | `-- mute-stream@0.0.5
| | +-- run-async@0.1.0
| | +-- rx-lite@3.1.2
| | +-- string-width@1.0.2
| | `-- through@2.3.8
| +-- is-my-json-valid@2.15.0
| | +-- generate-function@2.0.0
| | +-- generate-object-property@1.2.0
| | | `-- is-property@1.0.2
| | +-- jsonpointer@4.0.0
| | `-- xtend@4.0.1
| +-- is-resolvable@1.0.0
| | `-- tryit@1.0.2
| +-- js-yaml@3.6.1
| | `-- argparse@1.0.9
| +-- json-stable-stringify@1.0.1
| | `-- jsonify@0.0.0
| +-- levn@0.3.0
| | +-- prelude-ls@1.1.2
| | `-- type-check@0.3.2
| +-- lodash@4.16.4
| +-- mkdirp@0.5.1
| | `-- minimist@0.0.8
| +-- optionator@0.8.2
| | +-- deep-is@0.1.3
| | +-- fast-levenshtein@2.0.5
| | `-- wordwrap@1.0.0
| +-- path-is-absolute@1.0.1
| +-- path-is-inside@1.0.2
| +-- pluralize@1.2.1
| +-- progress@1.1.8
| +-- require-uncached@1.0.2
| | +-- caller-path@0.1.0
| | | `-- callsites@0.2.0
| | `-- resolve-from@1.0.1
| +-- shelljs@0.6.1
| +-- strip-json-comments@1.0.4
| +-- table@3.8.0
| | +-- ajv@4.7.7
| | | `-- co@4.6.0
| | +-- ajv-keywords@1.1.1
| | +-- lodash@4.16.4
| | `-- slice-ansi@0.0.4
| +-- text-table@0.2.0
| `-- user-home@2.0.0
| `-- os-homedir@1.0.2
+-- eslint-config-airbnb@9.0.1
| `-- eslint-config-airbnb-base@3.0.1
+-- eslint-plugin-import@1.16.0
| +-- builtin-modules@1.1.1
| +-- contains-path@0.1.0
| +-- doctrine@1.3.0
| +-- es6-set@0.1.4
| +-- eslint-import-resolver-node@0.2.3
| +-- has@1.0.1
| | `-- function-bind@1.1.0
| +-- lodash.cond@4.5.2
| +-- lodash.endswith@4.2.1
| +-- lodash.find@4.6.0
| +-- lodash.findindex@4.6.0
| +-- minimatch@3.0.3
| | `-- brace-expansion@1.1.6
| | +-- balanced-match@0.4.2
| | `-- concat-map@0.0.1
| +-- object-assign@4.1.0
| +-- pkg-dir@1.0.0
| | `-- find-up@1.1.2
| | `-- path-exists@2.1.0
| `-- pkg-up@1.0.0
+-- eslint-plugin-json@1.2.0
| `-- jshint@2.9.3
| +-- cli@1.0.0
| +-- console-browserify@1.1.0
| | `-- date-now@0.1.4
| +-- exit@0.1.2
| +-- htmlparser2@3.8.3
| | +-- domelementtype@1.3.0
| | +-- domhandler@2.3.0
| | +-- domutils@1.5.1
| | | `-- dom-serializer@0.1.0
| | | `-- domelementtype@1.1.3
| | +-- entities@1.0.0
| | `-- readable-stream@1.1.14
| | `-- isarray@0.0.1
| +-- lodash@3.7.0
| `-- shelljs@0.3.0
+-- eslint-plugin-jsx-a11y@1.5.5
| +-- damerau-levenshtein@1.0.3
| `-- jsx-ast-utils@1.3.1
+-- eslint-plugin-react@5.2.2
+-- extend@3.0.0
+-- hbs@4.0.1
| +-- handlebars@4.0.5
| | +-- optimist@0.6.1
| | | `-- wordwrap@0.0.3
| | +-- source-map@0.4.4
| | | `-- amdefine@1.0.0
| | `-- uglify-js@2.7.3
| | +-- async@0.2.10
| | +-- source-map@0.5.6
| | +-- uglify-to-browserify@1.0.2
| | `-- yargs@3.10.0
| | +-- camelcase@1.2.1
| | +-- cliui@2.1.0
| | | +-- center-align@0.1.3
| | | | +-- align-text@0.1.4
| | | | | +-- longest@1.0.1
| | | | | `-- repeat-string@1.5.4
| | | | `-- lazy-cache@1.0.4
| | | +-- right-align@0.1.3
| | | `-- wordwrap@0.0.2
| | +-- decamelize@1.2.0
| | `-- window-size@0.1.0
| `-- walk@2.3.9
| `-- foreachasync@3.0.0
+-- helmet@1.3.0
| +-- connect@3.4.1
| | +-- finalhandler@0.4.1
| | | `-- unpipe@1.0.0
| | `-- utils-merge@1.0.0
| +-- dns-prefetch-control@0.1.0
| +-- dont-sniff-mimetype@1.0.0
| +-- frameguard@1.1.0
| | `-- lodash.isstring@4.0.1
| +-- helmet-csp@1.1.0
| | +-- camelize@1.0.0
| | +-- content-security-policy-builder@1.0.0
| | | `-- dashify@0.2.2
| | +-- lodash.assign@4.0.4
| | +-- lodash.isfunction@3.0.8
| | +-- lodash.reduce@4.2.0
| | | +-- lodash._baseeach@4.1.3
| | | `-- lodash._basereduce@3.0.2
| | +-- lodash.some@4.2.0
| | `-- platform@1.3.1
| +-- hide-powered-by@1.0.0
| +-- hpkp@1.1.0
| +-- hsts@1.0.0
| | `-- core-util-is@1.0.2
| +-- ienoopen@1.0.0
| +-- nocache@1.0.0
| `-- x-xss-protection@1.0.0
+-- istanbul@0.4.5
| +-- abbrev@1.0.9
| +-- async@1.5.2
| +-- escodegen@1.8.1
| | +-- estraverse@1.9.3
| | `-- source-map@0.2.0
| +-- esprima@2.7.3
| +-- glob@5.0.15
| +-- nopt@3.0.6
| +-- once@1.4.0
| | `-- wrappy@1.0.2
| +-- resolve@1.1.7
| +-- supports-color@3.1.2
| | `-- has-flag@1.0.0
| +-- which@1.2.11
| | `-- isexe@1.1.2
| `-- wordwrap@1.0.0
+-- loopback@2.34.1
| +-- async@2.0.1
| | `-- lodash@4.16.4
| +-- bcryptjs@2.3.0
| +-- body-parser@1.15.2
| | +-- bytes@2.4.0
| | +-- content-type@1.0.2
| | +-- http-errors@1.5.0
| | | +-- inherits@2.0.1
| | | +-- setprototypeof@1.0.1
| | | `-- statuses@1.3.0
| | +-- iconv-lite@0.4.13
| | +-- on-finished@2.3.0
| | | `-- ee-first@1.1.1
| | +-- raw-body@2.1.7
| | | `-- bytes@2.4.0
| | `-- type-is@1.6.13
| | `-- media-typer@0.3.0
| +-- canonical-json@0.0.4
| +-- cookie-parser@1.4.3
| | +-- cookie@0.3.1
| | `-- cookie-signature@1.0.6
| +-- depd@1.1.0
| +-- ejs@2.5.2
| +-- errorhandler@1.4.3
| | `-- escape-html@1.0.3
| +-- express@4.14.0
| | +-- array-flatten@1.1.1
| | +-- content-disposition@0.5.1
| | +-- encodeurl@1.0.1
| | +-- finalhandler@0.5.0
| | +-- merge-descriptors@1.0.1
| | +-- path-to-regexp@0.1.7
| | +-- proxy-addr@1.1.2
| | | +-- forwarded@0.1.0
| | | `-- ipaddr.js@1.1.1
| | +-- range-parser@1.2.0
| | +-- send@0.14.1
| | | `-- destroy@1.0.4
| | `-- serve-static@1.11.1
| +-- inflection@1.10.0
| +-- isemail@1.2.0
| +-- loopback-connector-remote@1.3.3
| | `-- loopback-datasource-juggler@2.51.0
| | +-- async@1.0.0
| | `-- qs@3.1.0
| +-- loopback-context@1.0.0
| +-- loopback-phase@1.4.1
| | `-- async@0.9.2
| +-- nodemailer@2.6.4
| | +-- libmime@2.1.0
| | | +-- libbase64@0.1.0
| | | `-- libqp@1.1.0
| | +-- mailcomposer@3.12.0
| | | `-- buildmail@3.10.0
| | | `-- addressparser@1.0.1
| | +-- nodemailer-direct-transport@3.3.2
| | | `-- smtp-connection@2.12.0
| | | `-- httpntlm@1.6.1
| | | +-- httpreq@0.4.22
| | | `-- underscore@1.7.0
| | +-- nodemailer-shared@1.1.0
| | | `-- nodemailer-fetch@1.6.0
| | +-- nodemailer-smtp-pool@2.8.2
| | | `-- nodemailer-wellknown@0.1.10
| | +-- nodemailer-smtp-transport@2.7.2
| | `-- socks@1.1.9
| | +-- ip@1.1.3
| | `-- smart-buffer@1.0.11
| +-- nodemailer-stub-transport@1.1.0
| +-- stable@0.1.5
| +-- strong-globalize@2.8.0
| | +-- fs-sync@1.0.3
| | | `-- lodash@4.16.4
| | +-- g11n-pipeline@1.2.3
| | | `-- swagger-client@2.1.22
| | | +-- btoa@1.1.2
| | | +-- cookiejar@2.1.0
| | | +-- lodash-compat@3.10.2
| | | +-- q@1.4.1
| | | `-- superagent@2.3.0
| | | `-- form-data@1.0.0-rc4
| | +-- htmlparser2@3.9.1
| | | `-- entities@1.1.1
| | +-- lodash@4.16.4
| | +-- md5@2.2.1
| | | +-- charenc@0.0.1
| | | +-- crypt@0.0.1
| | | `-- is-buffer@1.1.4
| | +-- mktmpdir@0.1.1
| | | `-- rimraf@2.2.8
| | +-- optional@0.1.3
| | +-- os-locale@1.4.0
| | | `-- lcid@1.0.0
| | | `-- invert-kv@1.0.0
| | +-- posix-getopt@1.2.0
| | +-- word-count@0.2.2
| | `-- yamljs@0.2.8
| +-- strong-remoting@2.32.0
| | +-- async@2.0.1
| | | `-- lodash@4.16.4
| | +-- eventemitter2@2.1.3
| | +-- jayson@1.2.2
| | | +-- commander@1.3.2
| | | | `-- keypress@0.1.0
| | | +-- eyes@0.1.8
| | | +-- JSONStream@1.0.3
| | | | `-- jsonparse@1.0.0
| | | `-- lodash@3.6.0
| | +-- js2xmlparser@1.0.0
| | +-- mux-demux@3.7.9
| | | +-- duplex@1.0.0
| | | +-- json-buffer@2.0.11
| | | +-- msgpack-stream@0.0.12
| | | | +-- bops@0.0.6
| | | | | +-- base64-js@0.0.2
| | | | | `-- to-utf8@0.0.1
| | | | +-- msgpack-js@0.3.0
| | | | `-- through@2.3.4
| | | +-- stream-combiner@0.0.2
| | | | `-- duplexer@0.0.4
| | | +-- stream-serializer@1.1.2
| | | `-- xtend@1.0.3
| | +-- qs@6.2.1
| | +-- sse@0.0.6
| | `-- traverse@0.6.6
| +-- uid2@0.0.3
| `-- underscore.string@3.3.4
| +-- sprintf-js@1.0.3
| `-- util-deprecate@1.0.2
+-- loopback-boot@2.22.0
| +-- async@0.9.2
| +-- commondir@0.0.1
| +-- lodash@3.10.1
| +-- semver@4.3.6
| `-- toposort@0.2.12
+-- loopback-component-explorer@2.6.0
| +-- lodash@3.10.1
| +-- loopback-swagger@2.7.0
| | +-- ejs@1.0.0
| | +-- lodash@3.10.1
| | `-- underscore.string@2.3.3
| `-- strong-swagger-ui@21.0.2
+-- loopback-connector-postgresql@2.6.3
| +-- async@0.9.2
| `-- loopback-connector@2.4.0
+-- mocha@2.5.3
| +-- commander@2.3.0
| +-- diff@1.4.0
| +-- escape-string-regexp@1.0.2
| +-- glob@3.2.11
| | `-- minimatch@0.3.0
| | +-- lru-cache@2.7.3
| | `-- sigmund@1.0.1
| +-- growl@1.9.2
| +-- jade@0.26.3
| | +-- commander@0.6.1
| | `-- mkdirp@0.3.0
| +-- supports-color@1.2.0
| `-- to-iso-string@0.0.2
+-- node-uuid@1.4.7
+-- nodemon@1.11.0
| +-- chokidar@1.6.0
| | +-- anymatch@1.3.0
| | | +-- arrify@1.0.1
| | | `-- micromatch@2.3.11
| | | +-- arr-diff@2.0.0
| | | | `-- arr-flatten@1.0.1
| | | +-- array-unique@0.2.1
| | | +-- braces@1.8.5
| | | | +-- expand-range@1.8.2
| | | | | `-- fill-range@2.2.3
| | | | | +-- is-number@2.1.0
| | | | | +-- isobject@2.1.0
| | | | | `-- randomatic@1.1.5
| | | | +-- preserve@0.2.0
| | | | `-- repeat-element@1.1.2
| | | +-- expand-brackets@0.1.5
| | | | `-- is-posix-bracket@0.1.1
| | | +-- extglob@0.3.2
| | | +-- filename-regex@2.0.0
| | | +-- kind-of@3.0.4
| | | +-- normalize-path@2.0.1
| | | +-- object.omit@2.0.0
| | | | +-- for-own@0.1.4
| | | | | `-- for-in@0.1.6
| | | | `-- is-extendable@0.1.1
| | | +-- parse-glob@3.0.4
| | | | +-- glob-base@0.3.0
| | | | `-- is-dotfile@1.0.2
| | | `-- regex-cache@0.4.3
| | | +-- is-equal-shallow@0.1.3
| | | `-- is-primitive@2.0.0
| | +-- async-each@1.0.1
| | +-- glob-parent@2.0.0
| | +-- is-binary-path@1.0.1
| | | `-- binary-extensions@1.7.0
| | +-- is-glob@2.0.1
| | | `-- is-extglob@1.0.0
| | `-- readdirp@2.1.0
| | `-- set-immediate-shim@1.0.1
| +-- es6-promise@3.3.1
| +-- ignore-by-default@1.0.1
| +-- lodash.defaults@3.1.2
| | +-- lodash.assign@3.2.0
| | | +-- lodash._baseassign@3.2.0
| | | | +-- lodash._basecopy@3.0.1
| | | | `-- lodash.keys@3.1.2
| | | +-- lodash._createassigner@3.1.1
| | | | +-- lodash._bindcallback@3.0.1
| | | | `-- lodash._isiterateecall@3.0.9
| | | `-- lodash.keys@3.1.2
| | | +-- lodash._getnative@3.9.1
| | | +-- lodash.isarguments@3.1.0
| | | `-- lodash.isarray@3.0.4
| | `-- lodash.restparam@3.6.1
| +-- ps-tree@1.1.0
| | `-- event-stream@3.3.4
| | +-- duplexer@0.1.1
| | +-- from@0.1.3
| | +-- map-stream@0.1.0
| | +-- pause-stream@0.0.11
| | +-- split@0.3.3
| | `-- stream-combiner@0.0.4
| +-- touch@1.0.0
| | `-- nopt@1.0.10
| +-- undefsafe@0.0.3
| `-- update-notifier@0.5.0
| +-- configstore@1.4.0
| | +-- os-tmpdir@1.0.2
| | +-- osenv@0.1.3
| | +-- uuid@2.0.3
| | +-- write-file-atomic@1.2.0
| | | `-- slide@1.1.6
| | `-- xdg-basedir@2.0.0
| +-- is-npm@1.0.0
| +-- latest-version@1.0.1
| | `-- package-json@1.2.0
| | +-- got@3.3.1
| | | +-- duplexify@3.4.5
| | | | +-- end-of-stream@1.0.0
| | | | | `-- once@1.3.3
| | | | `-- stream-shift@1.0.0
| | | +-- infinity-agent@2.0.3
| | | +-- is-redirect@1.0.0
| | | +-- is-stream@1.1.0
| | | +-- lowercase-keys@1.0.0
| | | +-- nested-error-stacks@1.0.2
| | | +-- object-assign@3.0.0
| | | +-- prepend-http@1.0.4
| | | +-- read-all-stream@3.1.0
| | | `-- timed-out@2.0.0
| | `-- registry-url@3.1.0
| +-- repeating@1.1.3
| | `-- is-finite@1.0.2
| +-- semver-diff@2.1.0
| `-- string-length@1.0.1
+-- nsp@2.6.2
| +-- chalk@1.1.3
| | +-- ansi-styles@2.2.1
| | +-- escape-string-regexp@1.0.5
| | +-- has-ansi@2.0.0
| | | `-- ansi-regex@2.0.0
| | +-- strip-ansi@3.0.1
| | | `-- ansi-regex@2.0.0
| | `-- supports-color@2.0.0
| +-- cli-table@0.3.1
| | `-- colors@1.0.3
| +-- https-proxy-agent@1.0.0
| | +-- agent-base@2.0.1
| | | `-- semver@5.0.3
| | +-- debug@2.2.0
| | | `-- ms@0.7.1
| | `-- extend@3.0.0
| +-- joi@6.10.1
| | +-- hoek@2.16.3
| | +-- isemail@1.2.0
| | +-- moment@2.12.0
| | `-- topo@1.1.0
| +-- nodesecurity-npm-utils@5.0.0
| +-- path-is-absolute@1.0.0
| +-- rc@1.1.6
| | +-- deep-extend@0.4.1
| | +-- ini@1.3.4
| | +-- minimist@1.2.0
| | `-- strip-json-comments@1.0.4
| +-- semver@5.1.0
| +-- subcommand@2.0.3
| | +-- cliclopts@1.1.1
| | +-- debug@2.2.0
| | | `-- ms@0.7.1
| | +-- minimist@1.2.0
| | `-- xtend@4.0.1
| `-- wreck@6.3.0
| +-- boom@2.10.1
| `-- hoek@2.16.3
+-- pg@6.1.0
| +-- buffer-writer@1.0.1
| +-- packet-reader@0.2.0
| +-- pg-connection-string@0.1.3
| +-- pg-pool@1.5.0
| | `-- generic-pool@2.4.2
| +-- pg-types@1.11.0
| | +-- ap@0.2.0
| | +-- postgres-array@1.0.0
| | +-- postgres-bytea@1.0.0
| | +-- postgres-date@1.0.3
| | `-- postgres-interval@1.0.2
| +-- pgpass@1.0.1
| | `-- split@1.0.0
| `-- semver@4.3.2
+-- pg-copy-streams@1.2.0
+-- randomner@0.0.6
+-- request@2.75.0
| +-- aws-sign2@0.6.0
| +-- aws4@1.4.1
| +-- caseless@0.11.0
| +-- combined-stream@1.0.5
| | `-- delayed-stream@1.0.0
| +-- forever-agent@0.6.1
| +-- form-data@2.0.0
| | `-- asynckit@0.4.0
| +-- har-validator@2.0.6
| | +-- commander@2.9.0
| | | `-- graceful-readlink@1.0.1
| | `-- pinkie-promise@2.0.1
| | `-- pinkie@2.0.4
| +-- hawk@3.1.3
| | +-- boom@2.10.1
| | +-- cryptiles@2.0.5
| | +-- hoek@2.16.3
| | `-- sntp@1.0.9
| +-- http-signature@1.1.1
| | +-- assert-plus@0.2.0
| | +-- jsprim@1.3.1
| | | +-- extsprintf@1.0.2
| | | +-- json-schema@0.2.3
| | | `-- verror@1.3.6
| | `-- sshpk@1.10.1
| | +-- asn1@0.2.3
| | +-- assert-plus@1.0.0
| | +-- bcrypt-pbkdf@1.0.0
| | +-- dashdash@1.14.0
| | | `-- assert-plus@1.0.0
| | +-- ecc-jsbn@0.1.1
| | +-- getpass@0.1.6
| | | `-- assert-plus@1.0.0
| | +-- jodid25519@1.0.2
| | +-- jsbn@0.1.0
| | `-- tweetnacl@0.14.3
| +-- is-typedarray@1.0.0
| +-- isstream@0.1.2
| +-- json-stringify-safe@5.0.1
| +-- mime-types@2.1.12
| +-- oauth-sign@0.8.2
| +-- stringstream@0.0.5
| +-- tough-cookie@2.3.1
| `-- tunnel-agent@0.4.3
+-- selenium-webdriver@2.53.3
| +-- adm-zip@0.4.4
| +-- rimraf@2.5.4
| +-- tmp@0.0.24
| +-- ws@1.1.1
| | +-- options@0.0.6
| | `-- ultron@1.0.2
| `-- xml2js@0.4.4
| `-- sax@0.6.1
+-- serve-favicon@2.3.0
| +-- etag@1.7.0
| +-- fresh@0.3.0
| +-- ms@0.7.1
| `-- parseurl@1.3.1
+-- strong-error-handler@1.1.1
| `-- http-status@0.2.3
`-- supertest@1.2.0
+-- methods@1.1.2
`-- superagent@1.8.4
+-- component-emitter@1.2.1
+-- cookiejar@2.0.6
+-- form-data@1.0.0-rc3
+-- formidable@1.0.17
+-- mime@1.3.4
+-- qs@2.3.3
+-- readable-stream@1.0.27-1
| `-- isarray@0.0.1
`-- reduce-component@1.0.1
---> 802c6c29b40c
Removing intermediate container e484ae49b996
Step 6 : COPY . /usr/src/app
---> 7ef9c89f8f84
Removing intermediate container ecb9051def12
Step 7 : EXPOSE 3000
---> Running in df8269b70553
---> dab34a8426e0
Removing intermediate container df8269b70553
Step 8 : CMD npm start
---> Running in cd96302df09d
---> ca3840bdd1e0
Removing intermediate container cd96302df09d
Successfully built ca3840bdd1e0
Integrating Trace was so smooth until the CI build broke because my alpine-node container doesn't include native build tools required by
node-gyp
. Installing the native build tools is not a showstopper, but installing anything on an alpine container goes against the idea of using a slimmed down Linux base. It would make a much better developer experience if you could avoid requiring native build tools.