如何让Google Cloud读取Node.js项目的.env环境变量?
Hey Daniel,刚看到你的问题,这在Google Cloud部署Node.js项目时挺常见的,我给你整理几个实操性强的解决方案,都是官方推荐的方式:
方法1:通过Cloud Console手动配置(最适合快速解决)
假设你是用Cloud Run部署的(Express项目大多选这个),操作步骤如下:
- 打开Google Cloud控制台,找到你的Cloud Run服务
- 点击「编辑与部署新修订版本」
- 滚动到「变量、网络和高级设置」,展开「环境变量」板块
- 点击「添加变量」,把
.env里的键值对逐一录入:比如键填MAILCHIMP_API_KEY,值填你的实际密钥;键填MAILCHIMP_LIST_ID,值填对应的列表ID - 保存并部署新修订版,之后你的Express代码里就能直接用
process.env.MAILCHIMP_API_KEY读取这些变量了
方法2:用Cloud Build自动化注入(适合CI/CD流程)
如果你是通过Cloud Build流水线部署的,可以在cloudbuild.yaml里直接指定环境变量:
steps: - name: 'gcr.io/cloud-builders/gcloud' args: [ 'run', 'deploy', 'your-service-name', '--image', 'gcr.io/your-project-id/your-image', '--set-env-vars', 'MAILCHIMP_API_KEY=your-secret-key,MAILCHIMP_LIST_ID=your-list-id' ]
每次触发构建时,这些变量会自动加载到你的服务中。
方法3:针对App Engine部署的情况
如果你用的是App Engine而非Cloud Run,需要修改app.yaml文件,添加env_variables字段:
runtime: nodejs18 # 替换成你实际使用的Node.js版本 env_variables: MAILCHIMP_API_KEY: "your-mailchimp-api-key" MAILCHIMP_LIST_ID: "your-mailchimp-list-id"
修改后重新部署App Engine服务,process.env就能获取到这些配置了。
重要提醒
- 千万不要把
.env文件上传到代码仓库!这会导致密钥泄露,Google Cloud也不推荐这种做法 - 如果你本地开发时用了
dotenv包加载变量,记得在代码里做环境判断,避免生产环境冲突:
// server.js 里的配置 if (process.env.NODE_ENV !== 'production') { require('dotenv').config(); }
内容的提问来源于stack exchange,提问作者Daniel Contreras
相关产品推荐
相关产品推荐

