java - 变量中的 Dockerfile Spring Boot 属性不起作用

标签 java spring-boot docker dockerfile

我似乎无法通过 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 那么该值将被正确注入(inject)。

事实上,如果我执行 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"]

关于java - 变量中的 Dockerfile Spring Boot 属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983936/

相关文章:

docker - Docker服务创建需要更多时间

java - 在 JUNG 图中创建冗余重复节点

Spring 启动, Spring 启动启动器数据jpa : database type NONE or Cannot find changelog location

java - 解析日志文件以提取查询

mysql - Spring Boot/Hibernate/MySQL 不工作

Spring Boot 2.1.5 : Failed to replace {0} with Field Name on Validation Message

linux - 在 docker 中找不到 sqlplus

laravel - 如何从一个地方访问不同Docker容器中的脚本?

java - java中的Timeline和Thread有什么区别

java - Java和GUI-根据MVC模式,ActionListeners在哪里?