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

从Apple M1(Arm)构建quarkus本机Linux/amd64(x86_64)映像

向苗宣
2023-03-14

我正在尝试从Apple M1 Macbook为x86平台的本机docker容器构建Quarkus 2.8.0,并将其部署在Linuxamd64 Portainer中。我能够构建本机映像,并在检查文件时

file target/simple-app-1.0.0-SNAPSHOT-runner

输出为:

target/simple-app-1.0.0-SNAPSHOT-runner: Mach-O 64-bit executable x86_64

然后我使用Dockerfile.native-micro文件构建docker容器,并使用以下命令推送到我的本地注册表:

docker buildx build -t local-registry/repo/simple-app:latest-x86_64 -f src/main/docker/Dockerfile.native-micro --push --platform=linux/amd64 .

构建过程在没有错误或警告的情况下成功完成,当我在本地注册表中检查时,容器被创建。

当我试图用Portainer在我的Linuxamd64服务器中部署容器时,问题出现了。容器无法启动,日志输出为:

standard_init_linux.go:219: exec user process caused: exec format error

共有1个答案

东门俊民
2023-03-14

您创建的本机映像是Mac本机映像,它不会在Linux中运行。你应该使用

夸克构建quarkus.native.container

 类似资料:
  • 我正在运行一个Jenkinsdocker映像,我正在构建自己的映像,并希望添加对它的docker buildx支持,以便生成多平台映像,我不知道它应该如何工作。 当我检查受支持的平台时,我得到: 因为我在AMD64映像中。我读到我需要为此安装qemu,但我不知道Buildx如何识别它。 关于这一点,相关文档相对较少:https://docs.docker.com/buildx/working-wi

  • 有可能在Java 16下构建本机Quarkus映像吗?没有找到任何操作说明。 不知何故,这应该是可能的,因为Oracle发布了对Java16的GraalVM支持(https://www.graalvm.org/release-notes/21_1/)

  • 我有以下简化设置: 4)应用程序.属性 当我使用本机maven配置文件(mvn clean package-pnative)运行该文件时,我得到: 使用--report-unsupport-elements-at-runtime运行它也没有太大帮助。当我删除MyEntity类时,它在Mac+GRAALVM-CE-Java11-20.0.0上成功地编译为本机可执行文件

  • 我正在尝试使用Github自托管运行程序为我的qukus应用程序构建原生映像。 这对我来说在Github托管的跑步者上非常有用,但我想在自托管的跑步者上这样做,这样我们就不会浪费Github的预算。 当我更新我的工作流程以使用自我托管的跑步者时,我开始遇到这个奇怪的异常。 我使用的是GraalVM 22.0.0.2、Java 11.0.14、Maven 3.8.4和Quarkus 2.7.5 我尝

  • 在我的项目的根目录中,我发出了以下命令来创建一个特定于我的操作系统的本机可执行文件。有关详细信息,请参阅以下指南 这是输出。 本机映像生成失败,因为构建刚刚挂起。 我选择在主机上安装Graal VM,并选择非基于容器的方法,如下所示。 > ❯ brew安装——cask GRALVM/tap/GRALVM-ce-lts-java11 将Graal VM添加到JEnv管理的Java版本 ❯ jenv

  • 我正在构建一个夸克原生可执行映像,但由于未知参数,它失败了。我在属性文件中使用了变量,但它不起作用。 我正在使用java 11。可以 有人有任何想法吗?谢谢!!!