gradle 如何设置micronaut以生成docker图像

polkgigr  于 2022-12-23  发布在  Docker
关注(0)|答案(2)|浏览(149)

我是gradleKotlin和micronaut的新手。通过遵循官方指南create your first micronaut app gradle kotlin,我让它在我的mac M1上运行正常,但生成docker映像的任务失败:

Could not build image: no matching manifest for linux/arm64/v8 in the manifest list entries

我想这是意料之中的通过查看生成的Dockerfile,我得到了以下结果:

FROM openjdk:17-alpine
WORKDIR /home/app
COPY layers/libs /home/app/libs
COPY layers/classes /home/app/classes
COPY layers/resources /home/app/resources
COPY layers/application.jar /home/app/application.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/home/app/application.jar"]

所以FROM应该指定一个显式的平台,如果我没有弄错的话,micronaut的插件使用Gradle Docker Plugin,但是我没有找到合适的指令来覆盖它生成的原始fromAssert。

gfttwv5a

gfttwv5a1#

遵循文档:
默认情况下使用openjdk:17-alpine基础图像,但是您可以使用dockerfile任务的baseImage属性轻松切换要使用的基础图像:

tasks.named("dockerfile") {
 baseImage = "oracle/graalvm-ce:22.2.0-java11"
}
6yoyoihd

6yoyoihd2#

Micronaut Gradle插件默认设置的问题是,它使用openjdk:17-alpine作为基础映像。此映像仅适用于amd64架构。您的M1 Mac将使用aarch64
下面是我如何解决我的项目的问题。

tasks.named("dockerfile") {
    baseImage = "eclipse-temurin:17.0.5_8-jre-jammy"
}

这将在aarch64(又名arm64)和amd64上工作。

相关问题