【问题标题】:How to Pass environment as argument for a spring boot docker image?如何将环境作为 spring boot docker 映像的参数传递?
【发布时间】:2022-11-30 04:34:57
【问题描述】:

我创建了一个这样的 docker 文件

ARG ENV
FROM openjdk:11-jdk
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=${ENV}", "app.jar"]

在做的时候 docker run -p 8100:8080 anupbiswas1984/docker-env --e ENV=test

它没有识别 ${ENV}

在“docker run ...”期间如何将 ENV 作为参数传递

【问题讨论】:

标签: spring-boot docker dockerfile


【解决方案1】:

摆脱 ARG 的东西,因为它不需要,而且你也没有正确使用它。每the documentation

ARG 指令定义了一个变量,用户可以在构建时使用 docker build 命令将其传递给构建器

所以 ARG 是构建时的东西,你正试图将它用作运行时环境变量。

此外,您可以删除 ENTRYPOINT"-Dspring.profiles.active=${ENV}" 部分,因为 Spring Boot 已经在查找名为 SPRING_PROFILES_ACTIVE 的环境变量,因此无需在此处定义其他内容,并且您还引入了一个问题您尝试在此处解析 ENV 变量的方式。

FROM openjdk:11-jdk
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

然后运行它:

docker run -e SPRING_PROFILES_ACTIVE=test -p 8100:8080 anupbiswas1984/docker-env

【讨论】:

    【解决方案2】:

    Dockerfiles必须FROM 指令开始;将它移到第一行。

    任何选项都必须出现在图像名称之前,而不是之后:

    docker run -e VAR1=value1 -e VAR2=value2 -p 8100:8080 image:tag
    

    【讨论】:

    • 我正在传递 java.lang.IllegalArgumentException: Could not resolve placeholder 'ENV' in value "${ENV}"....... 但出现类似 java.lang.IllegalArgumentException: Could not resolve placeholder 'ENV' in value 的错误“${ENV}”
    猜你喜欢
    • 2018-03-24
    • 2023-03-26
    • 1970-01-01
    • 2018-12-02
    • 2018-07-30
    • 2021-11-06
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多