当前位置: 首页 > 知识库问答 >
问题:

在Apple Sillicon上编译夸克原生图像

宦翔飞
2023-03-14

我试着运行两个心轴:

./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-mandrel:20.3.2.0-Final-java11

和GraalVM版本:

./mvnw package -Pnative -Dquarkus.native.container-build=true  

但他们只是被困在建筑中,我有M1的最新Docker,这是一个来自心轴的样本,它只是停留在那里使用300%的cpu:

[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep]  docker run -v lambda-0.0.1-SNAPSHOT-native-image-source-jar:/project:z --env LANG=C --rm quay.io/quarkus/ubi-quarkus-mandrel:20.3.2.0-Final-java11 -J-Djava.util.logging.manager=org.jboss.logmanager.LogManager -J-Dcom.mysql.cj.disableAbandonedConnectionCleanup=true -J-DCoordinatorEnvironmentBean.transactionStatusManagerEnable=false -J-Dsun.nio.ch.maxUpdateArraySize=100 -J-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true -J-Dio.netty.leakDetection.level=DISABLED -J-Dio.netty.allocator.maxOrder=1 -J-Duser.language=en -J-Dfile.encoding=UTF-8 --report-unsupported-elements-at-runtime --enable-all-security-services --allow-incomplete-classpath -H:DynamicProxyConfigurationFiles=dynamic-proxies.json -H:ResourceConfigurationFiles=resources-config.json -H:ReflectionConfigurationFiles=reflection-config.json --initialize-at-run-time=com.common.utils -H:+ReportExceptionStackTraces --initialize-at-build-time= -H:InitialCollectionPolicy=com.oracle.svm.core.genscavenge.CollectionPolicy\$BySpaceAndTime -H:+JNI -jar lambda-0.0.1-SNAPSHOT-runner.jar -H:FallbackThreshold=0 -H:+ReportExceptionStackTraces -H:+AddAllCharsets -H:EnableURLProtocols=http,https --enable-all-security-services -H:-UseServiceLoaderFeature -H:+StackTrace lambda-0.0.1-SNAPSHOT-runner
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
[ithaca-creditcards-service-lambda-0.0.1-SNAPSHOT-runner:71]    classlist:  75,914.69 ms,  1.06 GB
[ithaca-creditcards-service-lambda-0.0.1-SNAPSHOT-runner:71]        (cap):   5,804.38 ms,  1.06 GB
[ithaca-creditcards-service-lambda-0.0.1-SNAPSHOT-runner:71]        setup:  18,307.33 ms,  1.06 GB
02:57:58,598 INFO  [org.hib.val.int.uti.Version] HV000001: Hibernate Validator 6.1.6.Final
02:57:59,639 INFO  [org.hib.Version] HHH000412: Hibernate ORM core version 5.4.24.Final
02:57:59,679 INFO  [org.hib.ann.com.Version] HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
02:57:59,894 INFO  [org.hib.dia.Dialect] HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
02:58:02,539 INFO  [org.hib.orm.beans] HHH10005002: No explicit CDI BeanManager reference was passed to Hibernate, but CDI is available on the Hibernate ClassLoader.

共有1个答案

陶星渊
2023-03-14

首先为GraalVM映像创建docker文件:

FROM ghcr.io/graalvm/graalvm-ce:22 as build
RUN gu install native-image
WORKDIR /project
VOLUME ["/project"]
ENTRYPOINT ["native-image"]

将此文件另存为Dockerfile。格拉阿尔文。然后使用它构建GraalVM图像

docker build -f src/main/docker/Dockerfile.graalvm -t graalvm .

现在您有了GraalVM映像,可以构建quarkus Linux映像

./mvnw package -Pnative  -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=graalvm

已创建的运行程序是64位ARM aarch 64可执行文件,可用于创建docker容器

docker build -f src/main/docker/Dockerfile.native -t quarkus/your-app . 

最后运行它

docker run --rm -p 8080:8080 quarkus/your-app
 类似资料:
  • 在我们的夸克应用程序中,我们使用LDAP服务器来检索用户数据。简而言之,代码如下所示: 使用jre版本,一切都运行良好,但使用Quarkus原生,我得到ClassNotFoundExceptions。构建和启动是成功的,但调用应用程序不起作用。 现在例外是java。lang.ClassNotFoundException:javax。网ssl。SSLSocketFactory。我想知道quarkus

  • 我希望这是一个正确的词,“compile”。我在这里问,因为我甚至不知道谷歌需要什么来获取更多信息。 我想在这里使用此库:http://jiggawatt.org/badc0de/android/#gifflen 下载提供了一堆.cpp和.h文件。据我了解,我需要一个.so文件才能使用 我不知道的是如何将这些C文件编译成必要的. so文件?

  • 遵循本指南:https://quarkus.io/guides/building-native-image 为此,Quarkus通过利用容器运行时(如Docker或podman)提供了创建本地Linux可执行文件的非常方便的方法。完成此任务的最简单方法是执行:./mvnw package-Pnative-Dquarkus.native.container build=true 我收到此错误:[er

  • 我想使用利用的新错误处理,但我还想使用使用注释。 问题是,附带了的包,这与冲突,因为它们都有JAXRSecurityConfig。denyJaxRs,导致以下错误: 有人能够使用这两个库吗?

  • 相关zulip聊天 我正在试图弄清楚,在quarkus中启动应用程序时,您应该如何优雅地失败。 我尝试将其添加到应用程序启动代码中。如果我运行一个单元测试,现在就不会调用它。仅当我直接启动应用程序时才会调用它。我希望返回一个非零值,以防抛出异常。这可能是推荐的方法。我不确定 我不确定这是一个功能请求还是一个bug,或者我遗漏了什么,这是正常的行为。 编辑1:我想说清楚: 当我使用“/gradlew

  • 编译器架构