サイト名変更・お引越しのお知らせ

Heroku上でGoコマンドを実行できるようにする方法を解説

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に追加する画面がありますのでその画面で追加します。

Herokuに環境変数を追加

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_IMAGEtrueを設定する