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