将变量传递给Dockerfile CMD,Nodejs

时间:2020-04-12 12:14:32

标签: node.js docker dockerfile

我已经习惯了Docker。这是我当前在DockerFile中的代码:

FROM node:12-alpine AS builder
ARG NODE_ENV
ENV NODE_ENV ${NODE_ENV}
RUN npm run build
CMD ["sh","-c","./start-docker.sh ${NODE_ENV}"]

我正在使用pm2来管理Node.js中的集群,这是我的 start-docker.sh

NODE_PATH=. pm2-runtime ./ecosystem.config.js --env $NODE_ENV

在我的ecosystem.config.js中,定义一个环境:

env_dev: {
        NODE_ENV: 'development'
      }

一切正常,但是在我的服务器上,NODE_ENV =''。我认为我通过CMD时出了点问题,但是找不到错误的地方

1 个答案:

答案 0 :(得分:0)

好吧,我认为还有另一种方法,请尝试这种方式。这不是实际的代码,只是一个想法。

ecosystem.config.js


module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

还有您的dockerfile

dockerfile


FROM node:12-alpine
RUN npm run build
CMD ["pm2","start","ecosystem.config.js"]

如PM2 CLI文档中所述,您只需要运行命令以使用命令pm2 start ecosystem.config.js启动应用程序,这将自动访问ecosystem.config.js中描述的ENV变量

https://pm2.keymetrics.io/docs/usage/application-declaration/#cli

请尝试此操作,您可能会有新问题,但希望某些错误日志有问题,以便我们进行更多调试。但是我确信这可以解决您的问题