当NODE_ENV =生产时,吞吐到Docker容器中
我有一个托pipeNodeJS Web应用程序的Docker容器 。
这个docker容器有环境variablesNODE_ENV=production
当我运行容器时,npm install会跳过package.json
文件中的所有devDependencies
。
我认为3种不同的解决scheme,但没有一个看起来不错
- 将
build
存储在我的CVS上 - build造外部docker
- 将所有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