当NODE_ENV =生产时,吞吐到Docker容器中

我有一个托pipeNodeJS Web应用程序的Docker容器

这个docker容器有环境variablesNODE_ENV=production

当我运行容器时,npm install会跳过package.json文件中的所有devDependencies

我认为3种不同的解决scheme,但没有一个看起来不错

  1. build存储在我的CVS上
  2. build造外部docker
  3. 将所有devDependencies移动到依赖关系

select1在CVS上存储,看起来很愚蠢

select2需要安装NodeJS,npm,gulp和其他许多库

select3看起来最好

但我对任何其他build议感兴趣

这种情况的另一种解决scheme是将NODE_ENV作为构buildparameter passing:

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

对于遇到任何将NODE_ENV作为构buildparameter passing的问题,只要将它作为NODE(如上所述)或其他名称传递即可。 在你的Dockerfile中,你可以像这样使用它:

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

注意,在上面的代码中, production是默认的,但是你可以用--build-arg NODE=development覆盖它。

好的,我find了一个解决scheme!

生产中的我的节点APP需要env var NODE_ENV=production

所以我编辑了docker文件并删除了这一行

 ENV NODE_ENV production 

我已经更新了CMD

 CMD ['./start.sh'] 

这是./start.sh

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