我在Docker容器中运行一个项目,我想将项目属性(在application.properties
文件中设置)设置为OS Env。
例如,M2_HOME
是一个操作系统环境,现在我需要在m2_home=${M2_HOME}
等弹簧配置属性中使用它,所以我可以在我的项目中使用m2_home
。
我试过配置如下:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath*:/resource/application-${profiles.active}.properties</value>
</property>
<property name="searchSystemEnvironment">
<value>true</value>
</property>
<property name="ignoreUnresolvablePlaceholders">
<value>true</value>
</property>
</bean>
但它不起作用。我能做些什么来实现我的目标?
答案 0 :(得分:0)
我去过那里很多次:为项目设置一个Docker镜像,并且必须支持[不那么]带有基于文本的配置文件的旧版应用程序。
Confd(https://github.com/kelseyhightower/confd)对我有好处,但这对于这样一个微不足道的任务来说有点过分。 Confd非常适合从集群KV商店中获取配置,因此需要一点点的仪式。
所以我最终简化了一些事情:Templater(https://github.com/reertech/templater)。您可以下载没有依赖关系的独立二进制文件,并立即使用它。当你运行它时,需要Go模板(这里是语言https://golang.org/pkg/text/template/的快速参考)并将其处理到输出文件中,允许您替换计算值并获取环境变量。
希望这有助于你,至少是一些未来的流浪者!