2015-07-16 18 views
6

Ho un contenitore di Dockerche ospitare un NodeJS applicazione Web.Gulp costruire nel contenitore Docker quando NODE_ENV = produzione

Questo contenitore finestra mobile ha la variabile d'ambiente NODE_ENV=production

Quando eseguo il contenitore, NPM installa saltare tutta la devDependencies dal file a causa di questo package.json.

ho pensato 3 soluzioni differenti ma nessuno sembra buona

  1. Conservare il build sul mio CVS
  2. costruire finestra mobile fuori
  3. Spostare tutti devDependencies dipendenze

Scelta 1 stoccaggio assumere CVS e aspetto stupido

Scelta 2 richiesta e di avere NodeJS, NPM, gulp e tante altre librerie installato

Scelta 3 sembra la migliore

ma sono interessati a tutti gli altri suggerimenti

risposta

5

Ok, ho trovato una soluzione!

mio nodo APP nella produzione richiedono l'env var NODE_ENV=production

Così Ho modificato il file finestra mobile e rimosso la linea

ENV NODE_ENV production 

Ho aggiornato CMD a

CMD ['./start.sh'] 

Ecco lo ./start.sh

#!/bin/bash 
gulp build 
export NODE_ENV=production 
nodemon server -p80 
10

Un'altra soluzione per questo tipo di situazioni sta passando NODE_ENV come argomento di compilazione:

docker build --build-arg NODE=development --rm -t some/name . 

Per chiunque incorrere in problemi di passaggio NODE_ENV come un build-arg ... provare solo di passaggio come NODE (come sopra) o un altro nome, invece. E nel tuo Dockerfile è possibile utilizzarlo in questo modo:

ARG NODE=production 
ENV NODE_ENV ${NODE} 
RUN npm start 

nota, nel codice precedente, production è l'impostazione predefinita, ma è possibile escludere con --build-arg NODE=development.

Problemi correlati