Go の Web アプリケーションを Heroku にデプロイしたメモ #golang #heroku

概要

基本的な流れは公式に従ってやってみれば問題ないのだろうけど、自分で作ったものをデプロイしようとしたらちょこちょこ詰まったので備忘録。

https://devcenter.heroku.com/articles/getting-started-with-go https://github.com/heroku/go-getting-started

サブディレクトリのみ対象のときは subtree で push

これは自分がディレクトリ構造をコネてたのが原因なのだが、 git リポジトリとアプリケーションのディレクトリ構造があってないと、うまくデプロイできない。

デプロイ対象がサブディレクトリにあるようなケースでは subtree を使って push する。

git subtree push --prefix my-app/ heroku main

subtree では force push できない

いわゆる force-push ができない状況になると、 heroku に push できなくなる。

subtree には force オプションがないので、 subtree split でどうにかする。

git push heroku `git subtree split --prefix myapp mainr`:main --force

stackoverflow.com

main 以外のブランチをデプロイするとき

my-branch:main のようにしてあげないと skip される。

Postgres への接続

接続情報を Config Vars に設定

Postgres add-on だと DATABASE_URL という変数に格納されるが、接続文字列をそのまま使わなかったので、バラして別名の変数に入れ直した。

DATABASE_URL は下記の形式なので、それぞれ設定し直した。

postgres://{user}:{password}@{hostname}:{port}/{database-name}

ちなみに heroku config で Config Vars は取得できる。

Heroku CLI のインストール

Mac だと homebrew で入る。

<200b>brew tap heroku/brew && brew install heroku

heroku autocomplete しておくと補完をしてくれるようになる。

おまけ

homebrew で入れたやつの completion シュッとやる方法がドキュメントにあった。

docs.brew.sh

heroku run

heroku run bash やると直接コマンド叩ける。

調査のとき便利。