Goで作ったアプリをherokuに上げるときのメモ
この前herokuにgolangのアプリを初めてデプロイしたんですが、絶対に忘れそうな手順だったので、次にやるときにここ見ればできるようにメモっておきます。
手順
1. .godirを用意する。
プロジェクトのルートにgo get先を記した.godirを用意します。
$ echo "github.com/yosuke-furukawa/goweb-sample" > .godir
2. Procfileを用意する。
$ echo "web: goweb-sample" > Procfile
go buildで作られるバイナリを実行する形式で指定しておく。
3. goのbuildpackを入れてheroku createする
$ heroku create -b https://github.com/kr/heroku-buildpack-go.git goweb-sample
heroku-buildpack-goを使う。
とまぁこんな感じのステップで公開できる。
mgo から mongo labを使うとき
MONGOLAB_URIからDB名とDBのuriをパースしてアクセスさせる必要があります。
僕の適当実装はこちら。
package tweets import ( "labix.org/v2/mgo" "os" "regexp" ) func getSessionAndDB() (*mgo.Session, *mgo.Database) { envuri := os.Getenv("MONGOLAB_URI") dburi := "localhost" dbname := "tweets" if envuri != "" { uriRegExp := regexp.MustCompile(`(.*)\/(\w+)`) connects := uriRegExp.FindStringSubmatch(envuri) dburi = connects[0] dbname = connects[2] } session, err := mgo.Dial(dburi) session.SetSafe(&mgo.Safe{}) if err != nil { panic(err) } return session, session.DB(dbname) }
ちなみにgoの依存関係を固定するにはgodepを使うのがいいかもしれないと思ったけど、godep何故かsaveがうまく行かず断念。
依存関係系のツール多いから一旦まとめてみたい。