Dockerfile Spring Boot 属性从变量不起作用



我似乎无法通过Dockerfile中的变量让Spring启动属性工作。这就是我正在做的:

ENTRYPOINT exec java -Dapp-version=$app_version -jar /app.jar

如果我在我的 Dockerfile 中RUN echo "App Version: $app_version",那么我会得到正确的输出,如 App Version: 1.70.0 .

如果我手动放置这样的版本:ENTRYPOINT exec java -Dapp-version=1.70.0 -jar /app.jar则值被正确注入。

事实上,如果我这样做RUN echo "ENTRYPOINT exec java -Dapp-version=$app_version -jar /app.jar"那么我会得到这样的输出

Step 9/10 : RUN echo "ENTRYPOINT exec java -D******ion=$app_version -jar /app.jar"
 ---> Running in b6c3cd9bb69a
ENTRYPOINT exec java -D******ion=1.70.0 -jar /app.jar

当我使用 Dockerfile 变量时,Spring 内部的值被设置为空字符串。当我将其硬编码为 1.70.0 时,它被正确设置。我错过了什么?

我尝试了很多不同的东西,包括使用 {}、引号等。

编辑:添加了Dockerfile

FROM java:8
ARG app_version
RUN echo -------------------
RUN echo "App Version: $app_version"
RUN echo -------------------
VOLUME /tmp
COPY ./build/libs/mango-sticky-rice-1.0.0-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT exec java -Dapp-version=$app_version -jar /app.jar

这个答案奏效了:https://stackoverflow.com/a/49889134/3088642。这是我的 Dockerfile 的样子:

FROM java:8
ARG app_version
RUN echo -------------------
RUN echo "App Version: ${app_version}"
RUN echo -------------------
VOLUME /tmp
COPY ./build/libs/mango-sticky-rice-1.0.0-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar'
RUN echo "#!/bin/bash n java -Dapp-version=${app_version} -jar /app.jar" > ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
RUN cat ./entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

最新更新