【问题标题】:Upgrade Dockerfile for Quarkus 1.11->1.13升级 Quarkus 1.11->1.13 的 Dockerfile
【发布时间】:2021-05-12 15:39:24
【问题描述】:

我正在尝试将我们的 Quarkus 版本从 1.11 升级到 1.13,但我不知道如何更新我的 Dockerfile。以下是我为 1.11 所拥有的以及我为 1.13 所尝试的(不成功),但我得到了错误。任何帮助将不胜感激。

适用于 1.11 的工作 Dockerfile:

COPY --from=build /opt/work/java/modules/my-service/.build/ /opt/${SERVICE}/
COPY --from=build /opt/work/java/modulesmy-service/.build/my-service*-runner.jar /opt/my-service/
...
CMD eval JAVA_OPTS=\"$JAVA_OPTS\" && java $JAVA_OPTS -jar /opt/my-service/my-service*-runner.jar

尝试对 1.13 进行更改:

COPY --from=build /opt/work/java/modules/my-service/.build/quarkus-app/* /opt/my-service/
...
CMD eval JAVA_OPTS=\"$JAVA_OPTS\" && java $JAVA_OPTS -jar /opt/my-service/quarkus-run.jar

错误部署:

Error: Could not find or load main class io.quarkus.bootstrap.runner.QuarkusEntryPoint
Caused by: java.lang.ClassNotFoundException: io.quarkus.bootstrap.runner.QuarkusEntryPoint

【问题讨论】:

    标签: docker dockerfile quarkus


    【解决方案1】:

    更改是因为切换到 fast-jar 作为默认包。详情请见this

    要为新的包装类型构建一个 docker 容器,您基本上需要执行以下操作:

    COPY target/quarkus-app/lib/ /deployments/lib/
    COPY target/quarkus-app/*.jar /deployments/
    COPY target/quarkus-app/app/ /deployments/app/
    COPY target/quarkus-app/quarkus/ /deployments/quarkus/
    

    可以看到here

    【讨论】:

    • 我已经将应用程序文件复制到:COPY --from=build /opt/work/java/modules/my-service/.build/quarkus-app/* /opt/my-service/ 我的错误发生在CMD 步骤中。在您的示例中,我不明白 /deployments/run-java.sh 来自哪里。我在quarkusBuild 任务生成的quarkus-app 目录中看不到它。
    • run-java.sh 在我的示例中来自基本图像。
    • 我建议您查看我的示例创建的图像以及您使用dive 创建的图像,这应该会揭示您的示例在容器图像的文件系统中缺少什么
    • 我现在可能只使用quarkus.package.type=legacy-jar,直到我弄清楚(刚刚在您的第一个链接中注意到这一点)。
    • 我想通了,我的COPY 没有按预期工作。当我把它分成 4 行时,就像你把它修好了一样。
    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    相关资源
    最近更新 更多