【发布时间】:2019-11-17 18:29:03
【问题描述】:
我对 Spring Boot 和 application.properties 非常陌生。我有一个问题,我需要非常灵活地使用我的数据库端口,因为我有两个不同的数据库。因此我想从环境变量中读取端口。我尝试了以下方法:
spring.data.mongodb.uri = mongodb://project1:${db-password}@abc:12345/project
如果我的数据库具有端口 12345,则此代码可以正常工作。但是如果我现在尝试从环境变量中读取端口,则会出现问题。 我试过这个:
spring.data.mongodb.uri = mongodb://project1:${db-password}@abc:${port}/project
问题如下:我使用的是 k8 和 Jenkins。环境变量“port”在我的 k8 中提供给我的程序,这对“db-password”有效,但不适用于端口。我的詹金斯说: "连接字符串包含无效的主机 'abd:${port}'。端口 '${port}' 无效,它必须是 0 到 65535 之间的整数"
现在我的问题是: 如何将端口读取为环境变量,而不会出现此错误?
提前谢谢你!
【问题讨论】:
-
执行到shell,首先确认有你要找的环境变量。
-
您只能使用环境提供的变量。因为
db_password有效,我们可以假设它已提供。根据@oleg-butuzov,如果您可以进入容器,则可以枚举所有环境变量(env)并查看是否设置了${port}。凭直觉(猜测),如果${db_password}有效,您是否尝试过 ${db_port}`? -
您是否查看了此链接:Define environment variable container?
-
是的,已经这样做了,环境变量已设置,我检查了它
-
如果存在
ENV['port'],请检查您的代码,例如$port}(这是您的示例)。
标签: jenkins kubernetes environment-variables port environment