【发布时间】:2018-10-11 09:20:51
【问题描述】:
我正在尝试在 go 应用程序中添加 application.yaml 文件,其中包含我想用环境变量覆盖的 ${RMQ_HOST} 值。
在application.yaml 我有:
rmq:
test:
host: ${RMQ_HOST}
port: ${RMQ_PORT}
在我的装载机中,我有:
log.Println("Loading config...")
viper.SetConfigName("application")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AutomaticEnv()
err := viper.ReadInConfig()
我遇到的问题是${RMQ_HOST} 不会被我在环境变量中设置的值替换,并尝试使用此字符串连接到 RabbitMQ
amqp://test:test@${RMQ_HOST}:${RMQ_PORT}/test
而不是
amqp://test:test@test:test/test
【问题讨论】:
-
为什么要使用环境变量时使用 yaml 文件?
-
因为 yaml 文件值被映射到环境变量,避免了硬编码键,使其在多个部署环境中更具可扩展性。也就是说,试图实现spring boot的功能。
-
那么我可能是您使用 viper 获取值的方式,您需要阅读文档以了解哪种方式适合您