我似乎无法通过Dockerfile中的变量来使Spring启动属性起作用。这就是我在做什么:
ENTRYPOINT exec java -Dapp-version=$app_version -jar /app.jar
如果我RUN echo "App Version: $app_version"
在Dockerfile中执行操作,则会得到正确的输出,如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"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句