[Go] .env로 환경변수 설정하기
내가 짠 소스코드를 원격저장소에 업로드 하려고 할 때 코드 속에 남들에게 보여주고 싶지않은 내 개인정보(?)가 포함되어 코드를 수정하여 업로드를 해본적이 다들 한 두번 있을것이다.
 아래처럼 DB연결을 하는 과정에서 사용자, 비밀번호 등이 코드에 나와버리면 그대로 업로드 하기가 꺼려진다.
1
2
3
4
5
6
7
8
9
10
11
12
13
const(
    // 남들에게 보여주고 싶지 않은 친구들
    user = "awsuser"
    password = "123456"
    host = "localhost"
    database = "myDB"
)
func main(){
    var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?charset=utf8mb4&parseTime=True", user, password, host, database)
    mysqlDB, err := sql.Open("mysql", connectionString)
    defer mysqlDB.Close()
}
오늘은 이와같이 코드를 통한 정보 유출을 막기위한 방법중의 한가지인 .env파일을 통해 환경변수를 설정하는 방법을 알아보겠다.
godotenv
오늘 소개할 패키지는 godotenv라는 친구다. go get 명령어로 패키지를 받아주자.
go get github.com/joho/godotenv
GitHub: https://github.com/joho/godotenv
 Documentation: https://pkg.go.dev/github.com/joho/godotenv#section-documentation
Usage
사용법은 무지 간단하다.
 .env파일을 만들고 그 안에 환경변수들을 설정해준뒤 코드에서 아래 형식처럼 불러오면 된다.
.env
1
DBNAME=<db_name>
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
import (
    "fmt"
    "os"
    "log"
    
    "github.com/joho/godotenv"
)
func main() {
    err := godotenv.Load(".env")
    
    if err != nil {
        log.Fatal("Error loading .env file")
    }
    
    fmt.Println("env [DBNAME]:", os.Getenv("DBNAME"))
}
