【问题标题】:Override ENTRYPOINT configuration in Micronaut Gradle Dockerfile覆盖 Micronaut Gradle Dockerfile 中的 ENTRYPOINT 配置
【发布时间】:2022-01-04 14:05:15
【问题描述】:

我正在将 Micronaut 应用程序作为 Docker 容器运行。

在 Kuberentes 运行时,会有一个具有确定值的 JAVA_OPTS 环境变量,例如:-XX:MaxRAMPercentage=45.0

执行./gradlew dockerBuild时可以看到如下Docker层:

Step 7/7 : ENTRYPOINT ["java", "-jar", "/home/app/application.jar"]

documentation 之后,我尝试添加对 JAVA_OPTS 的引用:

build.gradle.kts

    dockerfile {
        args("\$JAVA_OPTS")
    }

Docker 构建日志:

Step 7/7 : ENTRYPOINT ["java", "$JAVA_OPTS", "-jar", "/home/app/application.jar"]

这个问题是容器不会启动,因为 $JAVA_OPTS 不会被环境变量值替换。发生这种情况是因为它使用了 ENTRYPOINT 的 exec form

有没有办法覆盖或调整 ENTRYPOINT 以便评估环境变量?

【问题讨论】:

  • 如您链接的另一个问题所示,您可以ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /home/app/application.jar"]
  • 问题是如何配置Micronaut来改变入口点
  • 越过您链接的文档,我发现了以下链接,您可能比我自己更清楚:github.com/bmuschko/gradle-docker-plugin/blob/…
  • 我认为这行不通,文档显示了一个示例:The produced instruction looks as follows: ENTRYPOINT ["top", "-b"]
  • ...entryPoint('sh', '-c', 'java $JAVA_OPTS -jar /home/app/application.jar') => ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /home/app/application.jar"] ???

标签: docker micronaut


【解决方案1】:

按照link in your documentation,您似乎可以根据您的要求执行以下操作来覆盖入口点以解释命令中的环境变量:

entryPoint('sh', '-c', 'java $JAVA_OPTS -jar /home/app/application.jar')

它应该在生成的 Dockerfile 中转换为以下内容:

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /home/app/application.jar"]

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2018-12-25
    • 2013-06-27
    • 2019-04-07
    • 2021-07-29
    相关资源
    最近更新 更多