Go言語製のアプリケーションやAPIをHerokuにデプロイして運用していくケースで、Goコマンドを実行したい場合があると思います。
しかし、デフォルトのままだとGoコマンドは実行できません。
本記事では、Goコマンドを使えるようにする方法を解説します。
公式にも解説があり、運用するにあたって重要な情報も載っているので目を通しておくといいと思います。
Goツールチェーンをインストール
Goコマンドを使うには、Goツールチェーンをslugにインストールする必要があります。
方法としては、GO_INSTALL_TOOLS_IN_IMAGE
という環境変数にtrue
を設定します。
環境変数に追加する方法は変わりませんが、GUIとCLIからどちらも説明します。
モグモグさん
どちらで設定しても構いません!
GUI経由で追加
GUI経由で、GO_INSTALL_TOOLS_IN_IMAGEを追加
管理画面のSettings > Config Varsに追加する画面がありますのでその画面で追加します。
CLI経由で追加
Herokuコマンド経由でGO_INSTALL_TOOLS_IN_IMAGEを追加
$ heroku config:set GO_INSTALL_TOOLS_IN_IMAGE=true
コードをプッシュ
設定を反映するためには、コードをプッシュする必要がありますので、プッシュしましょう!
確認
Goコマンドを実行し、Goコマンドを使えるようになっているか確認しましょう。
Bashにログイン
$ heroku run bash
バージョンを確認
$ go version
モグモグさん
もし、エラーが発生した場合は、コードをプッシュして設定が反映されているかをご確認ください。
それでも解決しない場合は、コメントやTwitterで教えてください。
この設定により、slug サイズが約 81MB 増えます。
slugサイズが大きくなればなるほど、転送の速度に影響が出るため
できる限り小さく保つことが推奨されます。
参考: https://devcenter.heroku.com/ja/articles/slug-compiler#slug-size
【補足】Goツールチェーンとslugとは?
Goツールチェーンと、slugという単語が出てきたので補足として解説します。
すでに知っている方は、スキップしてください!
Goツールチェーン
Go言語だけではないのですが、ツールチェーンとはコンパイラやリンカーなどの組み合わせのことです。
モグモグさん
言語を実行するためには、複数のプロセスがありそれぞれツールが必要です。
それの組み合わせだと理解するのがいいと思います!
slug
HerokuはDynoというLinuxコンテナを使用しているのですが、それに最適化された、圧縮および事前パッケージ化されたアプリケーションのコピーです。
Heroku上でアプリケーションを実行するにあたって、重要な要素です。
モグモグさん
詳しい説明は公式でしているので、目を通すと良いと思います。
まとめ
HerokuでGoコマンドを使う方法を解説しました。
最後に要点をまとめておきます。
- Goツールチェーンをインストールする必要がある
- そのために、GO_INSTALL_TOOLS_IN_IMAGEにtrueを設定する