You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Maven为Micronaut构建适配EC2 Linux的amd64 Docker镜像?

在Apple M1上通过Maven构建Micronaut跨架构原生Docker镜像的标准方法

你遇到的exec /app/application: exec format error确实是架构不匹配导致的——M1是arm64架构,默认构建的原生镜像适配该架构,而EC2的Linux实例大多是amd64(x86_64)架构,自然无法直接运行。以下是Micronaut官方支持的两种标准配置方式:

方法一:构建命令直接指定架构

Micronaut的Maven插件支持通过docker.platform参数指定目标架构,直接在构建命令中追加该参数即可:

./mvnw package -Dpackaging=docker-native -Pgraalvm -Ddocker.platform=linux/amd64

如果需要长期固定这个配置,也可以在pom.xml的<properties>节点中添加默认值,后续构建就不用重复写参数:

<properties>
    <!-- 保留你原有的其他属性 -->
    <docker.platform>linux/amd64</docker.platform>
</properties>

方法二:在pom.xml中配置插件参数

若要更精细控制插件行为,可以直接修改pom.xml里的Micronaut Maven插件配置,显式指定构建平台:
找到<build>下的<plugins>节点,定位到micronaut-maven-plugin,在其<configuration>中添加<docker>子节点:

<plugin>
    <groupId>io.micronaut.maven</groupId>
    <artifactId>micronaut-maven-plugin</artifactId>
    <version>${micronaut.maven.plugin.version}</version>
    <extensions>true</extensions>
    <configuration>
        <!-- 保留你原有的其他配置 -->
        <docker>
            <platform>linux/amd64</platform>
        </docker>
    </configuration>
</plugin>

配置完成后,执行原构建命令就能生成适配amd64的镜像:

./mvnw package -Dpackaging=docker-native -Pgraalvm

额外提示

  • 确保你的Docker已开启BuildKit支持(M1版Docker Desktop默认已启用),跨架构构建依赖该特性。
  • 要是构建时出现镜像拉取慢的问题,可以配置Docker镜像加速器提升速度。

内容的提问来源于stack exchange,提问作者rich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:00:10