[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"))
}