使用viper 进行golang 应用的配置管理
viper 是一个强大的golang 配置管理包,支持多种配置格式内容的读取,同时支持读取key/value 存储的数据
而且不只是读取内容 ,同时也包含了,配置的写入操作。
以下是一个简单的demo,同时使用docker 运行
项目结构
项目使用go mod 进行包的管理
- 目录结构
├── Dockerfile
├── Makefile
├── README.md
├── cmd
│ └── yaml
│ └── main.go
├── docker-compose.yaml
├── go.mod
└── go.sum
代码说明
- go.mod
module github.com/rongfengliang/viper-app
go 1.13
require github.com/spf13/viper v1.4.0
- 代码
cmd/yaml/mai.go
package main
import (
"bytes"
"log"
"github.com/spf13/viper"
)
func main() {
viper.SetConfigType("yaml")
var yamlExample = []byte(`
Hacker: true
name: steve
hobbies:
- skateboarding
- snowboarding
- go
clothing:
- jacket: leather
- trousers: denim
age: 35
eyes: brown
beard: true
`)
viper.AutomaticEnv()
if err := viper.ReadConfig(bytes.NewBuffer(yamlExample)); err != nil {
log.Fatal("some error", err)
}
log.Print(viper.GetString("name"))
viper.Set("name", "demoapp rong")
log.Print(viper.GetString("name"))
var appname string = viper.GetString("APIKEY")
log.Print(appname)
}
- Makefile
build-app: clean make-dir build-mac build-linux build-windows
clean:
rm -rf build/*
make-dir:
mkdir -p build/{mac,linux,windows}
build-mac:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o build/mac ./cmd/...
build-linux:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/linux ./cmd/...
build-windows:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o build/windows ./cmd/...
- dockerfile
FROM alpine
LABEL EMAIL="1141591465@qq.com"
LABEL AUTHOR="dalongrong"
WORKDIR /app
COPY build/linux/yaml /app/yaml
RUN chmod +x /app/yaml
CMD [ "./yaml" ]
- docker-compose 文件
version: "3"
services:
app:
build: ./
image: dalongrong/viper-app
env_file:
- .env
运行&&构建
- 本地运行
不包含环境变量的
go run cmd/yam/main.go
支持环境变量的
APIKEY=rongfengliang go run cmd/yaml/main.go
- 容器运行
构建镜像
docker-compose build
启动
docker-compose up
效果
Attaching to viper-golang_app_1
app_1 | 2019/10/30 08:56:31 steve
app_1 | 2019/10/30 08:56:31 demoapp rong
app_1 | 2019/10/30 08:56:31 rongfengliang
viper-golang_app_1 exited with code 0
说明
以上是一个简单的demo,实际功能很强大,还需要再学习官方文档了解
参考资料
https://github.com/spf13/viper
https://github.com/rongfengliang/viper-learning
使用viper 进行golang 应用的配置管理的更多相关文章
- Golang项目的配置管理——Viper简易入门配置
Golang项目的配置管理--Viper简易入门配置 What is Viper? From:https://github.com/spf13/viper Viper is a complete co ...
- golang中的配置管理库viper
viper简介 Viper是适用于Go应用程序的完整配置解决方案.它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式.它支持: 设置默认值 从JSON,TOML,YAML,HCL,envfi ...
- golang中的viper示例
这是第二次实操viper了, 年纪大了就多练练,才能记住. http://go.coder55.com/article/6589 https://github.com/spf13/viper pack ...
- golang常用库:配置文件解析库-viper使用
一.viper简介 viper 配置解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 cob ...
- golang的配置文件操作:viper
参考: 1.http://blog.51cto.com/13599072/2072753 2.https://studygolang.com/articles/14453 3.https://www. ...
- golang模块viper读取配置文件
一.介绍 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML.HCL和Java properties文件中读取配 ...
- Go语言配置管理神器——Viper中文教程
Viper是适用于Go应用程序的完整配置解决方案.它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式. Viper Viper是适用于Go应用程序的完整配置解决方案.它被设计用于在应用 ...
- viper配置管理
安装 go get github.com/spf13/viper viper支持的功能 1.可以设置默认值 2.可以加载多种格式的配置文件,如JSON,TOML,YAML,HCL和Java属性配置文件 ...
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
随机推荐
- MarkDown添加图片的三种方式【华为云技术分享】
Markdown插图片有三种方法,各种Markdown编辑器的插图方式也都包含在这三种方法之内. 插图最基础的格式就是: Help查看命令提示helpdb.help()db.test.help()db.test.find().help()(2)创建/切换数据库use music(3)查询数据库show ...
- 【转载】C#通过遍历DataTable的列获取所有列名
在C#中的Datatable数据变量的操作过程中,可以通过遍历DataTable的所有列对象Columns属性,来获取DataTable中的所有列名信息,DataTable中所有列的对象信息都存储在D ...
- HTML 初始
HTML(Hyper Text Markup Language的缩写)中文译为“超文本标记语言”,主要是通过HTML标签对网页中的文本.图片.声音等内容进行描述. 一.HTML 骨架结构 每种语言都有 ...
- QT之Qt之Q_PROPERTY宏理解
在初学Qt的过程中,时不时地要通过F2快捷键来查看QT类的定义,发现类定义中有许多Q_PROPERTY的东西,比如最常用的QWidget的类定义: Qt中的Q_PROPERTY宏在Qt中是很常用的,那 ...
- Java深入学习(5):锁
可重入锁: 简单来说,支持重复加锁,有可重用性 特征:锁可以传递,方法递归传递 目的:避免了死锁现象 代码: public class Test implements Runnable { @Over ...
- PHP应用如何对接微信公众号JSAPI支付
微信支付的产品有很多,1. JSAPI支付 2. APP支付 3. Native支付 4.付款码支付 5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...
- Underscore——JS函数库
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826065.html underscore是什么——它是一个js函数库 jQuery统一了不同浏览器之间的 ...