开发和正产环境如何管理环境变量
-
使用命令行传递环境变量,拓展性较差,
PORT = 65534 node bin/www
-
使用.env 文件
PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
- 通过
dotenv
这个 npm 包可以读取.env 文件配置, 通过 process.env.xxx (可以获取到配置) - 注意:不要将配置文件发送到 Git 仓库,可能会泄露隐私数据
- 通过
-
VsCode 启动配置 (配置 Node 启动配置, launch.json)
{ "env": { "PORT": "65534", "DB_CONN": "mongodb://xxx", "SECRET_KEY": "xxxx" }, }
- 可以和.env 文件打通,配置设置
envFile
属性:{"envFile": "${workspaceFolder}/env"}
- 可以和.env 文件打通,配置设置
-
使用 Npm Scripts, 使用
npm start
运行项目,而不是暴露出 Node 命令, 需要首先在 VsCodelaunch.json
配置 Npm 模式-
"runtimeExecutable": "npm", "runtimeArgs": [ "start" ], "envFile": "${workspaceFolder}/.env"
-
同时需要给 Node 脚本添加
--inspect
参数, 才能触发 Vscode debugger 钩子
-
- 作者推荐使用微软的 Azure 管理环境变量,通过 Azure CLI 启动 Node 项目的时候,同时从云服务平台拿到环境变量信息
- 私有部署 - 私有 Git + 私有云服务 (换句话说就是我的私人仓库够安全,怎么放都无所谓)
- 持久化配置服务,通过自建或者开源持久化配置云服务存储环境变量,服务器通过 SDK 获取
- 加密服务:安全级别非常高的情况下,Git 也不允许提交,又要防止第三方(运营商)拦截,就要使用加密服务。
- 流程:
- 加密平台注册,拿到秘钥
- 加密平台设置环境变量,加密平台对内容进行加密
- 利用 Node SDK 获取到加密平台输出的密文
- 利用 SDK 和秘钥解密明文
- 流程:
- 对于基础设施完备的公司,可能不需要你关心环境变量安全性问题,对于自己使用第三方服务器,或者搭建博客的同学,需要注意三个点:
- 不要将重要的环境变量提交到公开的 Git 仓库
- 本地通过 VsCode 调试环境变量安全方便
- 生产环境通过云服务商提供的环境变量配置服务拿到环境变量