docker-compose环境会覆盖jar中的变量,docker环境变量和jar中的变量是如何映射的?

Posted

技术标签:

【中文标题】docker-compose环境会覆盖jar中的变量,docker环境变量和jar中的变量是如何映射的?【英文标题】:docker-compose environment will cover variables in jar, how are docker environment variable and variable in jar mapped? 【发布时间】:2017-12-24 00:53:23 【问题描述】:

例如,在 docker-compose.yml 中设置environment: EUREKA_PORT=8762

并且jar中的变量$eureka.port=8761不会生效。


为什么environment: EUREKA_PORT=8762 会覆盖$eureka.port=8761

docker环境变量jar中的变量是如何映射的?

【问题讨论】:

我不确定你是如何在你的java代码中转储$eureka.port的值来说明它是8761的值。 $eureka.port 对我来说看起来像壳`。无论如何,我不认为EUREKA_PORTeureka.port 相同。我可能是错的。 【参考方案1】:

您的思维方式完全正确-EUREKA_PORT=8762 将通过环境设置eureka.port。它是这样工作的:

如果您使用环境变量而不是系统属性,大多数操作系统不允许 句点分隔 键名,但您可以使用 下划线 代替(例如 SPRING_CONFIG_NAME 而不是spring.config.name)。

直接取自spring documentation。

【讨论】:

以上是关于docker-compose环境会覆盖jar中的变量,docker环境变量和jar中的变量是如何映射的?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spark docker-compose 网络中提交 jar?

覆盖第三方jar包中的某一个类。妙!!

读取环境Jmeter中的变量值

Docker:2 构建并发布Java服务的示例

Docker:2 构建并发布Java服务的示例

从 docker-compose 替换 NGINX 配置中的环境变量