【发布时间】: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"]???