새로운 프로젝트의 처음 기반부터 다지다 보니 설정 파일까지 새로 작성해야 했다.

기존에 사용했던 yaml 혹은 json parsing을 통한 방법이 아닌 새로운 envConfig 방식으로 작성하고자 한다.

 

Libraray : https://github.com/kelseyhightower/envconfig

 

GitHub - kelseyhightower/envconfig: Golang library for managing configuration data from environment variables

Golang library for managing configuration data from environment variables - GitHub - kelseyhightower/envconfig: Golang library for managing configuration data from environment variables

github.com

사실 해당 페이지에 너무 자세하게 설명되어 있어서 간단하게 사용하는 방법에 대해 작성했다.
main run을 실행할 때 아래와 같이 넣어주면 된다.

실제 서버에서는 쉘스크립트 하나 작성해서 적용하면 편리하게 사용가능하다.

# common-config
#!/bin/sh

export G_NAME=guiwoo
export G_EMAIL=guiwoo@naver.com
export G_KEY=key
export G_WORD=wordword==


# patch_main
#!/bin/sh

source ./common-config
./main > /dev/null 2>&1 &

 

// main.go
import (
	mCfg "env/config"
	"fmt"
	"github.com/kelseyhightower/envconfig"
)

var config CustomConfig

type CustomConfig struct {
	Name  string `envconfig:"NAME" required:"true"`
	Email string `envconfig:EMAIL required:"true"`
	mCfg.Secret
}

func init() {
	cfg := CustomConfig{}
	prefix := "G"
	if err := envconfig.Process(prefix, &cfg); err != nil {
		panic(err)
	}
	fmt.Printf("%+v", cfg)
}

func main() {
	fmt.Println("Config")
}

// env/config.go
type Secret struct {
	Key  string `envconfig:"KEY" required:"true"`
	Word string `envconfig:"WORD" required:"true"`
}

사실 포스팅하려고 했던 목적은 구조체 타입의 임베딩을 적용하는 경우 컨피그 항목을 읽어오지 못하는 부분이 있어 디코딩을 이용해서 작성하는 방법을 포스팅 하려고 했으나 다시 확인해 보니 컨피그의 키값을 올바르게 입력하지 못해 발생한 문제였다.. ㅠ

'Go > Go Basic' 카테고리의 다른 글

Parser 성능개선 (pprof)  (3) 2024.10.29
AES 암호화 적용 In Go  (1) 2023.10.10
Ultimate-Go-06 [에러처리]  (0) 2023.09.19
Ultimate-Go-04 [디커플링]  (0) 2023.09.13
Ultimate-Go-03  (2) 2023.09.07

+ Recent posts