node.js - 将变量传递给 Dockerfile CMD、Nodejs
问题描述
我已经习惯了 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 来管理 Nodejs 中的集群,这是我的start-docker.sh:
NODE_PATH=. pm2-runtime ./ecosystem.config.js --env $NODE_ENV
在我的生态系统.config.js 中,我定义了一个环境:
env_dev: {
NODE_ENV: 'development'
}
一切正常,但在我的服务器上,NODE_ENV=''。我认为当我传入我的 CMD 时有问题但无法找出问题所在
解决方案
好的,在我看来还有另一种方法可以做到这一点,请尝试这种方式。这不是实际的代码,它只是一个想法。
生态系统.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
这将自动访问 ENV 变量中描述的ecosystem.config.js
https://pm2.keymetrics.io/docs/usage/application-declaration/#cli
请试试这个,你可能有新的问题,但希望有一些错误日志的问题,以便我们可以更多地调试。但我相信这可以解决你的问题
推荐阅读
- encryption - 确定从移动应用到 API 的 Post 请求的加密算法
- python - 将字符串转换为键
- javascript - 达到最大长度时如何用新输入替换以前的用户输入?
- github - 如何在 Github Actions Secret 中共享令牌
- python - 如何保存经过微调的 DistilBert 模型?
- javascript - 如果以编程方式处理,选择标签不会更新/填充
- html - 具有不同列宽的网格自动布局
- safari - 是否可以检查 Safari 中的“实验功能”是否处于活动状态?
- php - Magento2 - 锚点“关闭”时隐藏过滤器
- r - R 中的新数据转换问题