如何覆盖JavaJAR应用程序。docker环境变量的属性
我有一个带应用程序的maven java应用程序。资源目录中的属性文件,我已经生成了一个。jar,我想覆盖应用程序。属性文件在里面。来自docker环境变量的jar
申请。属性:
url=myurl
Dockerfile:
FROM openjdk:8-jdk-alpine
COPY target/app.jar app.jar
COPY myentrypoint.sh /
CMD ["sh", "/myentrypoint.sh"]
myentrypoint。嘘
#!/bin/bash
# if the env var URL is not empty
if [ ! -z "${URL}" ]; then
echo "url=${URL}" >> application.properties
fi
exec java -jar ./app.jar $@
我想覆盖应用程序。像这样的属性:
docker run -e URL='newurl' myimage
# 1 楼答案
如果要重写该值,可以使用一个
>
来重写文件,而不是附加到文件中(如使用双>>
)here's差异
编辑: 如果你构建了应用程序。属性到JAR文件中您可以提取它,更改值并再次构建它,更合适的解决方案是将属性文件放置在一个公共位置,如
/home/user/application.properties
,并使用此函数System.getProperty("user.home")
或者你可以用Java Preferences APIhere's另一个例子
多亏了this线程