반응형
# GitHab 이슈
https://github.com/YooGenie/study-service/issues/11
배포 방식에 따라 json 파일을 만들었다. 배포 방식에 따라 정보가 다르기 때문 각 파일을 만들고 Environment
json값으로 구별했다.
config.dev.json
config.json
config.prod.json
우리 회사 코드에서는 main안에 아래의 코드를 적었다.
config.ConfigureEnvironment("./", "STUDY_GENIE_DB_PASSWORD", "STUDY_GENIE_ENCRYPT_KEY") //환경변수 설정
- config.go 파일에 ConfigureEnvironment()가 존재한다. path와 환경변수를 넘겨준다.
# ConfigureEnvironment() 함수 코드 분석하기
func ConfigureEnvironment(path string, env ...string) {
configor.Load(&Config, path+"config/config.json") //배포 환경에 따른 설정 파일(json)을 로딩한다.
properties := make(map[string]string)
//env가 1) STUDY_GENIE_DB_PASSWORD 2) STUDY_GENIE_DB_PASSWORD => 키값이 된다.
//환경변수의 키-값 쌍을 설정
for _, key := range env {
arg := os.Getenv(key) //키에 따른 값을 가져온다. => 환경변수 읽기
if len(arg) == 0 {
panic(fmt.Errorf("No %s system env variable\n", key))
}
properties[key] = arg //키에 값을 저장한다.
//key값은 STUDY_GENIE_DB_PASSWORD이고 value는 내가 컴퓨터에 저장해 놓는 환경변수 값을 가져온다.
}
afterPropertiesSet(properties)
}
github.com/jinzhu/configor
를 import 해서configor
를 통해서 환경변수 설정 파일을 로딩한다.- os.Getenv() : 환경변수 읽기
- os.Setenv() : 환경변수 쓰기
- 환경변수들을 배열로 키와 값으로 저장하여 afterPropertiesSet()으로 보내준다.
# afterPropertiesSet() 함수 분석하기
func afterPropertiesSet(properties map[string]string) {
Config.Encrypt.EncryptKey = properties["STUDY_GENIE_ENCRYPT_KEY"]
//Config 구조체 안에서 Encrypt안에 EncryptKey에 값을 넣어준다.
if properties["STUDY_GENIE_DB_PASSWORD"] != "" {
Config.Database.ConnectionString = fmt.Sprintf("%s:%s%s", Config.Database.User, properties["STUDY_GENIE_DB_PASSWORD"], Config.Database.Connection)
} else {
Config.Database.ConnectionString = Config.Database.Connection
}
}
- 환경변수를 가지고 와서 Config 구조체 안에 값을 넣어준다.
DB 비밀번호나 암화키만 설정했지만 JWT 비밀키, AWS 키값 등등 설정할 수 있다.
반응형
'Study > Go 언어' 카테고리의 다른 글
[golang] 10자리이하 숫자를 입력하면 앞에 0을 채워서 10자리 수 만들기 (0) | 2022.02.28 |
---|---|
[golang] 슬라이스(slice) 공부하기 (0) | 2022.02.22 |
[golang] 타입(type) 확인 하는 방법 (0) | 2022.02.19 |
[golang] 구조체(struct) 공부하기 (0) | 2022.02.18 |
[golang] 배열 공부하기 (0) | 2022.02.14 |