
환경변수(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
프로젝트의 루트 디렉터리에서 다음을 실행한다:
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()
}
성공적으로 환경변수를 받아오는 것을 확인할 수 있다.