[Gin] dotenv를 이용하여 환경변수를 관리해보자

riveroverflow·2024년 9월 2일
post-thumbnail

환경변수란?

환경변수(environment variable)은 환경에 따라 다르게 설정되어야 하는 변수들에 대한 설정을 할 수 있다.
예를 들면, 개발자의 로컬 환경과, 실제 배포 서버에서는 다르게 설정되어야 하는 값들이 있겠다.
(로컬 db주소, 실제 db주소 등..)
또한, 데이터베이스의 비밀번호, 외부 API 키 등, 민감한 정보를 Github에 올리면 위험하기에, 환경 변수의 사용이 권장된다.

go에서는 os.Getenv()를 통해서 환경변수를 불러올 수 있다.

터미널에서 환경변수 입력하기

Unix기반 운영체제는 export, MS DOS에서는 set을 한 뒤, key=value를 입력하면 된다.

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Hello", os.Getenv("HELLO"))
}
$ export HELLO=World && go run main.go
Hello World

godotenv로 환경변수 관리하기

프로젝트의 루트 디렉터리에서 다음을 실행한다:

go get -u github.com/dotenv-org/godotenvvault

.env파일을 만들어서 다음과 같이 필요한 환경변수를 KEY=VALUE형식으로 저장한다.

그 뒤, 프로젝트의 config/env.go에서 환경변수 불러오기 함수를 만든다.
config/env.go

package config

import "github.com/dotenv-org/godotenvvault"

// LoadEnv - Load Environment variable from .env
func LoadEnv() error {
	err := godotenvvault.Load()
	if err != nil {
		return err
	}
	return nil
}

성공적으로 환경변수를 불러오는데 성공하여 에러가 없으면, nil을 반환시키는 함수를 만든다.

main.go

package main

import (
	"proj-name/config"
	"proj-name/internal/routers"
	"log"
	"os"

	"github.com/gin-gonic/autotls"
)

func main() {
	config.LoadEnv()
	config.ConnectToDB()
	config.InitLogger()

	app := routers.SetupRouter()
	app.Run()
}

성공적으로 환경변수를 받아오는 것을 확인할 수 있다.

참조

https://www.dotenv.org/docs/quickstart

0개의 댓글