我有一个 Docker容器,可以托管 NodeJS Web应用程序。
此docker容器具有环境变量NODE_ENV=production
当我运行容器时,npm install会跳过devDependencies
文件中的所有package.json
。
我认为3个不同的解决方案,但似乎都不好
build
存储在我的CVS上选择1在CVS上存储,看起来很愚蠢
选择2需要安装NodeJS,npm,gulp和许多其他库
选择3看起来最好
但我对任何其他建议感兴趣
答案 0 :(得分:12)
对这些情况的另一种解决方案是将NODE_ENV作为构建参数传递:
docker build --build-arg NODE=development --rm -t some/name .
对于遇到将NODE_ENV作为build-arg传递的问题的任何人...尝试将其作为NODE(如上所述)或其他名称传递。在您的Dockerfile中,您可以像这样使用它:
ARG NODE=production
ENV NODE_ENV ${NODE}
RUN npm start
注意,在上面的代码中,production
是默认设置,但您可以使用--build-arg NODE=development
覆盖它。
答案 1 :(得分:5)
生产中的我的节点APP需要env var NODE_ENV=production
所以我已经编辑了泊坞窗文件并删除该行
ENV NODE_ENV production
我已将 CMD 更新为
CMD ['./start.sh']
以下是./start.sh
#!/bin/bash
gulp build
export NODE_ENV=production
nodemon server -p80