在Heroku上部署Google Cloud Vision API应用的凭据配置问题咨询
Heroku 配置 Google Cloud 凭证的正确解决方案
问题根因
- .profile 配置逻辑本身没问题,失败大概率是凭证内容转义、引号缺失、路径不匹配导致文件生成失败
heroku bash进入的是独立的临时 dyno 实例,和运行应用的 dyno 是完全隔离的不同文件系统,手动创建的文件应用完全无法访问- 直接提交 json 文件未生效,90% 概率是你的
.gitignore规则默认屏蔽了凭证类 json 文件,实际根本没有推送到 Heroku
正确操作步骤
- 优先用环境变量+动态生成文件的方案,避免凭证提交到代码仓库的安全风险
- 先将本地凭证文件转成单行无换行格式,避免 shell 解析错误:本地终端执行
cat google-credentials.json | tr -d '\n',复制输出的单行内容 - 在 Heroku 后台配置两个环境变量:
GOOGLE_CREDENTIALS:值为上一步拿到的单行凭证内容GOOGLE_APPLICATION_CREDENTIALS:值固定写/app/google-credentials.json,不要用$HOME这类变量避免解析异常
- 在项目根目录创建
.profile文件,内容为:echo "$GOOGLE_CREDENTIALS" > /app/google-credentials.json,注意变量一定要加双引号,避免内容中特殊字符被 shell 截断 - 检查项目
.gitignore文件,确认没有屏蔽.profile文件,执行git add .profile && git commit && git push heroku main提交部署 - 部署完成后执行
heroku run cat /app/google-credentials.json验证,能正常输出完整凭证内容即为配置成功
特殊场景适配
如果你使用 Docker 容器方式部署 Heroku 应用,.profile 机制不会生效,需要将生成凭证的逻辑写到 Dockerfile 的启动脚本中,在启动应用进程前先执行将环境变量写入凭证文件的操作即可。
内容的提问来源于stack exchange,提问作者Yihao Liu
相关产品推荐
相关产品推荐

