【学習記録】DB接続情報を環境変数化

今日は個人開発してるアプリでリファクタリングを行い、DBに接続する箇所をハードコーディングされている状態だったので環境変数からDB情報を読み込むように修正しました。 思ったより時間かかりましたが、早めに改善した方が良い場所だったのですっきりしました。

コミットは以下です。
まだ余分なコメントが残っていますがちょっとずつ整理していきます。

github.com

現場ではDocker composeで開発しているので、docker-compose.ymlで環境変数をコンテナに渡せるのですが、個人でローカルで開発する時はDocker使っていなかったので現場と同じ方法が使えなくて他の方法を考えました。

いろいろ調べたところ、Setenv()関数で環境変数を設定することができそうっだたのでファイルを新しく作り必要な環境変数の分Setenv関数を実行する処理を書きました。
内容は以下のようになりました。

package env

import "os"

// SetEnvVariables 環境変数を設定
func SetEnvVariables() {
    os.Setenv("DBMS", "mysql")
    os.Setenv("USER", "root")
    os.Setenv("PASSWORD", "root")
    os.Setenv("PROTOCOL", "tcp(localhost:3306)")
    os.Setenv("DBNAME", "DBNAME")
}

DB接続情報を書き込むのでGitに上げるのはまずいと考えこのファイルは.gitignoreに追加しました。

これで環境変数を設定できたのでDBに接続する処理ではos.Getenv()関数で環境変数を取得して想定通りDBに接続できることが確認できました。