我已经习惯了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时出了点问题,但是找不到错误的地方
答案 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
请尝试此操作,您可能会有新问题,但希望某些错误日志有问题,以便我们进行更多调试。但是我确信这可以解决您的问题