godotenvを使ったGolangでの環境変数の設定方法




Golangでの環境変数の設定方法

環境変数の設定方法には幾つかあるので簡単なものから紹介していきます。

export

一番一般的な方法で、簡単に設定できます。

 export GO_ENV=develop

取得方法

package main

import (
	"log"
	"os"
)

func main() {
	const env = os.Getenv("GO_ENV")
	log.Println(env) // develop
}

 

起動スクリプトに設定

環境変数をいろんな値で汚くしたくない場合は下記のようにnode実行時に簡単に設定できます。取得方法は同じです。

GO_ENV=develop go run main.go

 

godotenv

godotenvは環境変数を設定したファイルを読み込むことで、osパッケージから環境変数にアクセスできるようにしてくれます。

godotenvはgo getでインストールします。

$ go get github.com/joho/godotenv

プロジェクトのrootディレクトリ直下にenvfileディレクトリを作成します。ディレクトリ配下に各環境で読み込みたい設定ファイルを作成し、環境変数を設定。

$ tree .
.
├── envfiles
│             ├── develop.env
│             ├── production.env
│             └── test.env
└── main.go

ファイルの中身はこんな感じで設定します。

dbuser: test
dbpass: 12345678

使用方法はこちら。簡単にファイルに設定した環境変数を使用できます。

package main

import (
	"fmt"
	"log"
	"os"

	"github.com/joho/godotenv"
)

func main() {
	err := godotenv.Load(fmt.Sprintf("envfiles/%s.env", os.Getenv("GO_ENV")))
	if err != nil {
		log.Fatal("Error loading .env file")
	}

	user := os.Getenv("DB_USER")
	pass := os.Getenv("DB_PASS")

	log.Println(user) // test
	log.Println(pass) // 12345678
}

起動時にGO_ENVに環境名を渡してファイルに設定した値を読み込むことでosパッケージから使えうようになります。

$ GO_ENV=test go run main.go

まとめ

  • exportで設定
  • 起動スクリプトに設定
  • godotenvで設定し、osパッケージから使用

設定方法はたくさんあるのでプロジェクトの規模や進捗具合で最適なものを選択するのがいいかと思います。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です