求助:在 golang 中,如何优雅的处理在不同的环境中,数据库的 DNS 配置不同的问题。

58 天前
 byerer
如何优雅的处理在不同的环境中(如本地开发、Docker Compose 和 Kubernetes ),数据库的 DNS 配置不同的问题。
1691 次点击
所在节点    Go 编程语言
9 条回复
caola
58 天前
读取环境变量,或者启动参数?
kiracyan
58 天前
本地配置 启动参数 环境变量
byerer
58 天前
本机上和 docker-compose 上的时候经常要把 config 中 host 在 127.0.0.1 和 mysql 之间来回改,本人刚开始学 k8s ,deploy 是通过拉取镜像部署的,目前知道可以通过环境变量或者 configmap 读取配置,貌似可以用 volumeMounts 挂载到容器中,只需要多配置一个路径,或者配置相同的路径就行?
xiaozirun
58 天前
@byerer 我用的也是 volume 挂载不同的配置文件到容器中,我平常的做法是用多个 docker-compose 文件,使用 docker-compose -f 可以指定文件,在每个文件中定义不同的挂载,一些使用的是容器中的数据库,一些连着服务器的数据库,马马虎虎吧,不知道还有没有更方便的方法
xiaozirun
58 天前
@byerer k8s 用的不多,但是大概也是挂载不同配置文件的思路
wogogoing
58 天前
我们的配置是统一存放在配置中心,由服务实例按需拉取。同时也支持热更新。相信不少的朋友都是采用的这样的方案。丢一个自己的开源项目,写的不好的地方大家轻喷(🐶

https://github.com/keepchen/go-sail

关于配置热更新的文档章节:
https://go-sail.keepchen.com/docs/examples/configuration#from-nacos
mrjnamei
57 天前
cmd/test/main.go
cmd/dev/main.go
cmd/prod/main.go
guanzhangzhang
57 天前
反正不要想着人去改和维护,人是会出错误的。使用 golang 的 build-tag ,设置配置文件的名字。
qloog
37 天前
2 种方式:
1 、环境变量
2 、启动参数

根据以上两种的任意一种去读对应环境的配置文件,可以参考: https://github.com/go-eagle/eagle 里面的实现方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1076144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX