Đọc biến môi trường từ file

Theo Nguyên tắc số 3 của The Twelve-Factor App thì cấu hình cần phần tách biệt khỏi source code.

Thông thường cấu hình sẽ được lưu ở biến môi trường hoặc một dịch vụ bên ngoài như AWS Secrets Manager.

Trong Golang, để đọc biến môi trường ta có thể sử dụng code bên dưới

// set biến môi trường
os.Setenv(key, value)

// get biến môi trường
value := os.Getenv(key)

Để đọc biến môi trường được cấu hình từ file (ví dụ như .env) thì ta có thể sử dụng package godotenv

godotenv

go get github.com/joho/godotenv

godotenv cung cấp phương thức Load để đọc file env

// mặc định đọc file .env ở trong thư mục hiện tại
godotenv.Load()

// hoặc chỉ định file
godotenv.Load("/path/to/file/env")

File env hỗ trợ format yaml, tham khảo tài liệu ở đây

viper

Ngoài godotenv thì viper là package phổ biến nhất hỗ trợ các format như JSON, TOML, YAML, HCL, envfile và cả Java properties config file.

go get github.com/spf13/viper
// cấu hình đường dẫn file env
viper.SetConfigFile(".env")

// đọc cấu hình
viper.ReadInConfig()

// đọc giá trị
viper.Get(key)

// xác nhận kiểu dữ liệu
value, ok := viper.Get(key).(string)
// nếu kiểu dữ liệu của `key` là string thì ok trả về true

Leave a Reply

Your email address will not be published. Required fields are marked *