Home [Go] .env로 환경변수 설정하기
Post
Cancel

[Go] .env로 환경변수 설정하기

[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"))
}
This post is licensed under CC BY 4.0 by the author.

[Devlog] Golang으로 게시판을 구현해보았다(1)

[Devlog] 첫번째 프로젝트를 시작해보았다.