코드 안에 민감한 정보를 넣고 커밋하기가 꺼려질때가 있다.
그리고 더 중요한건 배포 환경 간에 변경 될 수 있는 코드는 따로 환경 변수로 두는 것이 맞다.
Go 언어에서 좋은 라이브러리가 있어서 소개 하려고 한다.
godotenv
<github>
https://github.com/joho/godotenv
<document>
https://pkg.go.dev/github.com/joho/godotenv#section-documentation
Github Readme 보면 예시도 매우 잘 나와 있어서 사용하기 편하다.
간단하게 해보면
1. 설치
go get github.com/joho/godotenv
2. .env file 생성
vi .env # vi 로 .env 파일 생성
SECRET_KEY=YOURSECRETKEYGOESHERE # SECRET_KEY 라는 내용 추가
wq # 저장 닫기
limjian@Jians-MacBook-Pro-13 go-test % ls -al
total 32
drwxr-xr-x 6 limjian staff 192 7 6 00:38 .
drwx------@ 28 limjian staff 896 7 6 00:28 ..
-rw-r--r-- 1 limjian staff 34 7 6 00:38 .env
-rw-r--r-- 1 limjian staff 207 7 6 00:35 go.mod
-rw-r--r-- 1 limjian staff 1060 7 6 00:35 go.sum
-rw-r--r-- 1 limjian staff 237 7 6 00:44 main.go
3. 실행
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
)
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
secretKey := os.Getenv("SECRET_KEY")
fmt.Println(secretKey)
}
limjian@Jians-MacBook-Pro-13 go-test % go run main.go
YOURSECRETKEYGOESHERE
이런식으로 env 파일 안에 있는 변수를 읽어온다.
보통 사용방법은
server의 개발환경이 development 인지 production 인지에 따라 .env 파일을 따로 만들어서
환경 변수를 불러 올 수 있다.
정말 유용한 라이브러리 꼭 사용하길..
cf ) 이것도 많이 사용하긴 하드라
하지만 godotenv 더 편함
https://github.com/caarlos0/env
'Language > Go' 카테고리의 다른 글
[Go] Time format (2006-01-02 15:04:05) (0) | 2022.07.20 |
---|---|
[Go] Covert Time Unix to UTC (1) | 2022.07.20 |
[Go] net Dial, DialTimeout (check tcp port open) (0) | 2022.07.04 |
[Go] go resty (net/http) (0) | 2022.07.04 |
[Go] Go version upgrade (change) (0) | 2022.06.05 |