有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何覆盖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) 个答案

  1. # 1 楼答案

    如果要重写该值,可以使用一个>来重写文件,而不是附加到文件中(如使用双>>

    here's差异

    编辑: 如果你构建了应用程序。属性到JAR文件中您可以提取它,更改值并再次构建它,更合适的解决方案是将属性文件放置在一个公共位置,如/home/user/application.properties,并使用此函数System.getProperty("user.home") 或者你可以用Java Preferences API

    here's另一个例子

    多亏了this线程