覆盖 Micronaut Gradle Dockerfile 中的 ENTRYPOINT 配置

Override ENTRYPOINT configuration in Micronaut Gradle Dockerfile

我是 运行 作为 Docker 容器的 Micronaut 应用程序。

在 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 不会被 env 变量值替换。发生这种情况是因为它正在使用 ENTRYPOINT 的

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

link in your documentation 之后,您似乎可以执行类似以下操作来根据您的要求覆盖入口点以解释命令中的 env var:

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

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

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