heroku 默认 one-off dyno 不预装 go 环境;需通过指定 go buildpack 创建应用,才能在 heroku run bash 中正确调用 go 命令并执行编译、测试等操作。
heroku 默认 one-off dyno 不预装 go 环境;需通过指定 go buildpack 创建应用,才能在 heroku run bash 中正确调用 go 命令并执行编译、测试等操作。
在 Heroku 上运行 Go 应用时,若直接执行 heroku run bash 后输入 go version 或 go build,会遇到 bash: go: command not found 错误——这是因为 Heroku 的基础运行时(slug)默认仅预装 Ruby、Python 等语言环境,Go 并非内置工具链,而是通过 Buildpack 动态注入的。
✅ 正确做法是:在创建应用时显式绑定 Go Buildpack:
heroku create -b https://github.com/heroku/heroku-buildpack-go # 或使用官方短名(推荐) heroku create -b heroku/go
⚠️ 注意:若已用 heroku create(无 -b 参数)创建应用,则默认使用 heroku/ruby 或通用 buildpack,Go 不会被安装。此时需手动添加 buildpack:
heroku buildpacks:set heroku/go git commit --allow-empty -m "Trigger rebuild" git push heroku main之后重新启动 One-Off Dyno(heroku run bash),go 命令即可正常使用。
验证是否生效:
$ heroku run bash Running bash on ⬢ your-app-name... up, run.1234 ~ $ go version go version go1.22.5 linux/amd64 ~ $ go env GOPATH /app/.heroku/go
? 补充说明:
- Go Buildpack 会在构建阶段自动检测 go.mod 或 Godeps 文件,并安装对应 Go 版本;
- 运行时环境(包括 go 可执行文件)被注入到 slug 的 /app/.heroku/go/bin/,并通过 PATH 自动配置;
- 不建议在 One-Off Dyno 中执行 go install 或修改全局 Go 工具链——这些变更不会持久化,且可能破坏 buildpack 的预期行为。
总之,Go 支持不是“开箱即用”,而是“按需装配”。确保 buildpack 正确设置,是解锁 heroku run bash 中完整 Go 开发能力的前提。











