はじめに
Ginを使ったWeb API起動時には、基本的に以下の文が表示されます。
[WARNING] Running in "debug" mode. Switch to "release" mode in production.
これは開発環境なら問題ありませんが、デプロイの際にはreleaseモードとして起動する必要があるということです。
そこで、releaseモードでの起動方法と、ついでに環境変数の使い分けについて紹介しようと思います。
バージョン一覧
使用技術 | バージョン |
---|---|
go | 1.22.0 |
gin | 1.9.1 |
godotenv | 1.5.1 |
releaseモードでの起動
これは簡単で、起動時のコマンドを以下のようにするだけです。
GIN_MODE=release go run cmd/main.go
このコマンドによって起動すると、起動時に
[GIN-debug] GET ~
[GIN-debug] GET ~
[GIN-debug] POST ~
のように表示されていた、debug特有の表示がなくなります。
ターミナルには何も表示されていませんが、実際にAPIにアクセスするとレスポンスが返ってくることが確認できます。
環境変数の使い分け
先程release時には、以下を実行する必要があると紹介しました。
GIN_MODE=release go run cmd/main.go
このGIN_MODEの値をmain.goで読み取ることによって、envファイルの使い分けが可能になります。
具体的には、以下のコードになります
// GIN_MODEを読み取る
env := os.Getenv("GIN_MODE")
// GIN_MODEが設定されてなければdevelopmentを代入
if env == "" {
env = "development"
}
// .envファイルの読み込み
err := godotenv.Load(fmt.Sprintf(".env.%s", env))
if err != nil {
log.Fatal("Error loading .env file")
}
これによって、.env.release や .env.productionといったファイルを準備することで、環境変数を使い分けることが出来ます。
makefileに以下のようなコマンドを準備しておけば、簡単に使い分けることが可能になります。
# 開発段階でのサーバ起動
run-dev:
go run cmd/main.go
# 製品段階でのサーバ起動
run-release:
GIN_MODE=release go run cmd/main.go
おわりに
どちらも、デプロイしよう!と意気込んだ時に軽く手こずったので誰かの参考になれば幸いです。
読んでいただき、ありがとうございました!