在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?
Posted
技术标签:
【中文标题】在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?【英文标题】:How do I define architecture arm64 when building the docker image through Maven spring-boot:build-image on Windows? 【发布时间】:2021-11-30 05:23:48 【问题描述】:我在一个父级中有多个 Spring Boot 微服务,我可以运行 spring-boot:build-image
为所有模块构建 docker 映像。我正在使用我的 Windows WSL2 Ubuntu x86_64 和 Docker 引擎通过 IntelliJ 中的配置构建图像。
我在我的 Windows 机器上一切都很好,我可以成功启动容器,但我希望我的图像在我的 Raspberry Pi Ubuntu Server 21.04 架构 ARM64 上的容器中运行,并通过我的 Windows Docker Registry 拉取它们,所以我可以轻松地在本地传输图像。我的注册表也可以正常工作,但是我遇到了由于架构问题而无法启动映像的错误。
如何在 IntelliJ Maven 配置运行中更改 docker 镜像构建的架构?
我发现通过 Maven 配置 spring-boot 非常方便,它为构建镜像做了各种配置。我不知道如何使用 docker-compose.yml 或 Dockerfile 来成功构建映像。如果这是答案,我将把我的研究重点放在这个上面,但直到现在我还很困惑该怎么做。
我的感觉是 pom.xml 并在那里定义任何配置。我的 pom.xml 现在看起来像这样:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
问题编辑:
我看到你可以使用参数--platform=linux/arm64
。我可以把它放在某个地方吗?
【问题讨论】:
尝试使用 Docker CLI 来完成这个任务。您可以在构建命令中使用 --build-arg ARCH=arm64v8。欲了解更多信息,请参阅这篇文章:docker.com/blog/multi-arch-build-and-images-the-simple-way我希望这可以帮助你 我在 docker 引擎上对我的图像执行的每个清单 CLI 都被拒绝访问。 【参考方案1】:我发现答案是直到现在我还无法运行的事情之一 - 使用 Dockerfile。
-
在 IntelliJ 中,我通过 Services 连接到本地网络上的 Docker 远程 Raspberry Pi 实例
我创建了一个简单的 Dockerfile
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY $JAR_FILE app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
-
我在 IntelliJ 中选择在 Docker 实例上部署并选择 Dockerfile
它现在可以在我的 Raspberry Pi 上构建和部署我的应用程序,而中间没有任何本地 Windows 服务
通过运行 Deploy with IntelliJ 的 Dockerfile 成功构建和部署 Docker 镜像和容器! 我很高兴
【讨论】:
以上是关于在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?
IntelliJ IDEA Maven的详细安装教程(Windows版)(一站式:简介+下载+安装+环境搭建+IDEA上配置Maven)