You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku:如何部署包含私有仓库依赖的NodeJS应用?

Heroku 授予单私有仓库只读权限部署方案

方案1:私有Git仓库作为依赖的场景

  • 首先在本地生成专属SSH密钥对,执行命令:
    ssh-keygen -t ed25519 -C "heroku-app-private-repo-access"
    注意生成时不要覆盖本地现有SSH密钥,且不要设置密码(Heroku构建过程无法交互式输入密钥密码),最终会得到公钥(后缀为.pub)和私钥两个文件。
  • 打开私有Git仓库的设置界面,找到「部署密钥(Deploy Key)」配置入口,将上一步生成的公钥内容粘贴进去,务必勾选只读权限,不要开启写入权限。
  • 将生成的私钥内容配置为Heroku应用的环境变量,可通过Heroku CLI执行命令:
    heroku config:set GIT_SSH_KEY="$(cat /本地路径/生成的私钥文件名)"
    也可以直接在Heroku应用后台的设置页手动添加该配置变量。
  • 在项目根目录新建.profile.d文件夹,在文件夹内创建setup-ssh.sh脚本,内容如下:
#!/bin/sh
mkdir -p ~/.ssh
echo "$GIT_SSH_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
# 如果使用非GitHub的Git托管平台,将下方github.com替换为对应平台的域名即可
ssh-keyscan github.com >> ~/.ssh/known_hosts

将该脚本提交到Git仓库,Heroku构建时会自动执行该脚本配置SSH环境,拉取依赖时就会通过对应密钥完成身份验证。

方案2:私有npm registry包作为依赖的场景

  • 到对应npm私有仓库的后台生成该私有包的只读访问令牌。
  • 将生成的令牌配置为Heroku应用的环境变量NPM_TOKEN。
  • 在项目根目录新建.npmrc文件,写入内容:
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    如果使用的是第三方私有npm registry,将URL替换为对应registry的地址即可。将该.npmrc文件提交到Git仓库,构建时npm会自动读取环境变量中的令牌拉取私有包,不会泄露明文凭据。

注意事项

  • 所有敏感凭据(私钥、令牌)都不要明文提交到代码仓库,统一通过Heroku的配置变量存储,Heroku会对配置变量做加密处理,不会对外暴露。
  • 部署密钥仅绑定单个私有仓库,且仅授予只读权限,即使出现密钥泄露也只会影响单个仓库,风险可控。

内容的提问来源于stack exchange,提问作者GirkovArpa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:36:05