Gulp 在 NODE_ENV=production 时构建到 Docker 容器中
Gulp build into Docker container when NODE_ENV=production
我有一个 Docker 容器 托管 NodeJS Web 应用程序。
这个docker容器有环境变量NODE_ENV=production
当我 运行 容器时,npm install 会因此跳过 package.json
文件中的所有 devDependencies
。
我认为有 3 种不同的解决方案,但 none 看起来不错
- 将
build
存储在我的 CVS 上
- 外建docker
- 将所有 devDependencies 移动到 dependencies
选项 1 在 CVS 上存储,看起来很愚蠢
选项 2 需要安装 NodeJS、npm、gulp 和许多其他库
选项 3 看起来最好
但我对任何其他建议感兴趣
好的,我找到了解决办法!
我的生产节点应用需要环境变量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
另一种解决此类情况的方法是将 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
覆盖它。
我有一个 Docker 容器 托管 NodeJS Web 应用程序。
这个docker容器有环境变量NODE_ENV=production
当我 运行 容器时,npm install 会因此跳过 package.json
文件中的所有 devDependencies
。
我认为有 3 种不同的解决方案,但 none 看起来不错
- 将
build
存储在我的 CVS 上 - 外建docker
- 将所有 devDependencies 移动到 dependencies
选项 1 在 CVS 上存储,看起来很愚蠢
选项 2 需要安装 NodeJS、npm、gulp 和许多其他库
选项 3 看起来最好
但我对任何其他建议感兴趣
好的,我找到了解决办法!
我的生产节点应用需要环境变量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
另一种解决此类情况的方法是将 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
覆盖它。