注意: 本文只关注如何部署自己的 GitHub 代码到 Heroku。
先参考 Heroku 提供的 Demo 了解大概情况。
依赖 godep;
生成 godep 依赖。 godep save ./… 。不要用 -r 参数;
包括那些依赖包, 一并提交到github;
需要Procfile, web: app_name (二进制名称);
安装heroku cli, 可以看log。
调整代码, 主要是调整启动服务的端口。
port := os.Getenv("PORT")
if port == "" {
log.Fatal("$PORT must be set")
}
先在本地试试能不能启动。如果本地都不能正常运行, 在 Heroku上也是会失败的。
heroku local
正常启动会看到类似下面的信息):
forego | starting web.1 on port 5000
web.1 | starting at :5000 ...
Heroku 默认使用 5000 端口。 heroku 命令行工具会自动提供 $PORT 环境变量,不用手动设置。
上述操作都是调整程序本身, 下面去 heroku 的 dashboard 创建应用。
create new app;
填写app name (可选);
选择 Deploy => GitHub;
GitHub 授权后,选择需要部署的 repo;
选择要部署的Branch, 然后点击 Deploy Branch;
看 Build 的日志;
如果一切正常就可以访问了。
上述操作都是很简单的, 打开Dashboard 一目了然,这里不再提供截图操作。
Trouble Shooting
如果访问遇到 application error, 则
heroku logs --tail --app you_app_name
TIPS: 看日志往往能解决 99% 的问题。
如果发现是
at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=initials.herokuapp.com request_id=4eea4848-47e9-4c78-baf2-1c90c1c98980 fwd="120.31.68.166" dyno= connect= service= status=503 bytes=
查询文档, 发现是
H14 - No web dynos running
This is most likely the result of scaling your web dynos down to 0 dynos. To fix it, scale your web dynos to 1 or more dynos:
$ heroku ps:scale web=1
执行上面的命令修复即可。
参考:
http://blog.anthonyringoet.be/heroku-no-web-processes-running/
https://devcenter.heroku.com/articles/log-runtime-metrics#enabl
本文地址 http://holys.im/2015/11/23/deploy-go-app-to-heroku-md/