1% 이해하기 시리즈/Golang

[golang 1% 이해하기] godotenv | dotenv 환경 변수값 활용하기

TLOWAC 2024. 11. 11. 06:04

 

🏃🏻 들어가며

지금까지는 viper 를 활용한 환경 변수 값 활용에 대해서 정리했습니다.

이번 글에서는 또 다른 도구인 godotenv 를 사용해 환경 변수 값을 활용하는 방법을 정리해 보았습니다.

viper 를 사용하는 방식이 궁금하신분들을 위해 링크를 남겨 놓겠습니다 !
https://helicopter55.tistory.com/94

https://helicopter55.tistory.com/95

 


 

  godotenv 설치 및 환경 변수 활용하기

1) godotenv 설치하기

go get 명령어를 통해 godotenv 라이브러리를 다운로드 받습니다.

 

 go get github.com/joho/godotenv 

go get github.com/joho/godotenv

 

2) 환경 변수 활용하기

godotenv 를 통해 .env 파일에서 환경 변수 값을 가져오는 방식은 viper 와 단순히 비교해보자면, 무척이나 간단합니다.

 

 godotenv.Load()  을 통해 .env 파일에서 환경 변수값을 불러오고

 os.Getenv("환경변수명")  을 통해 환경 변수값을 활용하면 됩니다.

package main

import (
    "log"
    "os"

    "github.com/joho/godotenv"
)

func main() {
  err := godotenv.Load()
  if err != nil {
    log.Fatal("Error loading .env file")
  }

  dbPort := os.Getenv("DB_PORT")
  dbHost := os.Getenv("DB_HOST")
}

 

 


 

  env 맵핑을 사용하는 방식

경우에 따라서는 .env 파일에서 환경변수값을 불러오고 EnvConfig 구조체에 값을 넣는 방식을 사용 합니다.

이럴때 사용하면 좋은게 바로 env 입니다.

 

라이브러리 이름이 env 이기 때문에 혼동이 올 수도 있습니다.

하지만, 기능은 단순히 환경 변수를 파싱해서 구조체에 할당하는 역할만 합니다.

 

1) godotenv 설치하기

go get 명령어를 통해 env 라이브러리를 다운로드 받습니다.

 

 go get github.com/caarlos0/env/v11 

go get github.com/caarlos0/env/v11

 

2) 환경 변수를 EnvConfig 구조체에 맵핑하기

go get 명령어를 통해 env 라이브러리를 다운로드 받습니다.

 

 `env:DB_HOST,required`   와 같이 구조체 필드에 할당하고자 하는 환경 변수명을 작성 합니다.

이후에는 env.Parse(config) 를 통해 실제 환경변수 값을 envConfig 구조체에 맵핑 합니다.

package main

import (
	"log"

	"github.com/caarlos0/env"
	"github.com/joho/godotenv"
)

type EnvConfig struct {
	ServerPort string `env:"SERVER_PORT,required"`
	DBHost     string `env:"DB_HOST,required"`
	DBName     string `env:"DB_NAME,required"`
	DBUser     string `env:"DB_USER,required"`
	DBPassword string `env:"DB_PASSWORD,required"`
}

func NewEnvConfig() *EnvConfig {
	err := godotenv.Load()

	if err != nil {
		log.Fatalf("Unable to load .env: %e", err)
	}

	// EnvConfig 참조
	config := &EnvConfig{}

	// 환경변수 값 파싱
    // 환경변수 값 맵핑
	if err := env.Parse(config); err != nil {
		log.Fatalf("Unable to load variables from .env: %e", err)
	}

	return config
}

 


 

 

📍마무리하며

이번 글을 통해서 godotenv 를 활용해 .env 파일의 환경 변수 값을 가져오는데 도움이 되었으면 좋겠습니다 :)

실제 동작하는 코드는 여기서 확인 하실 수 있습니다.

 

반응형