通过docker文件在生产中设置NODE_ENV变量

时间:2019-03-20 17:23:24

标签: node.js docker dockerfile

我正在尝试在nodejs中的代码下面使用以下代码

if (process.env.NODE_ENV !== 'production')

我试图从如下所示的docker文件中设置NODE_ENV变量。

FROM collinestes/docker-node-oracle:10-slim
ENV NODE_ENV=production
EXPOSE  8085
CMD ["npm","start"]

如果我运行我的docker映像,它将无法启动并引发错误。如果我删除NODE_ENV,一切运行正常。是从dockerfile设置NODE_ENV的正确方法吗?

2 个答案:

答案 0 :(得分:0)

删除等号

ENV NODE_ENV production

答案 1 :(得分:0)

您的Dockerfile应该可以工作,您确定应用程序内没有其他任何东西,也许package.json可以覆盖它?

我已经对其进行了测试,并且可以正常工作

$ echo $NODE_ENV
production

我还建议在运行容器时设置NODE_ENV变量,因为它很容易修改,我知道您可以根据需要重写它,但是在运行时进行设置将使您较少图层的图像。您可以使用下面的命令

  

-e可用于传递环境变量,如果您有多个变量,则可以多次传递

docker run -e NODE_ENV=production $IMAGENAME