簡體   English   中英

通過 Maven spring-boot:build-image on Windows 構建 docker 鏡像時如何定義架構 arm64?

[英]How do I define architecture arm64 when building the docker image through Maven spring-boot:build-image on Windows?

我有多個 Spring Boot 微服務,我可以運行spring-boot:build-image為所有模塊構建 docker 圖像。 我正在使用我的 Windows WSL2 Ubuntu x86_64 和 Docker 引擎通過 IntelliJ 中的配置構建圖像。

我在我的 Windows 機器上一切都很好,我可以成功啟動容器,但我希望我的圖像在我的 Raspberry Pi Ubuntu Server 21.04 for architecture ARM64 上的容器中運行,並將它們拉到我的 Windows Docker 注冊表中,這樣我就可以輕松地本地傳輸圖像。 我的注冊表也能正常工作,但后來我遇到了由於體系結構問題無法啟動映像的錯誤。

如何在 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 我可以把它放在某個地方嗎?

我發現答案是我無法運行的事情之一,直到現在 - 使用 Dockerfile。

  1. 在 IntelliJ 中,我通過服務連接到 local.network 上的 Docker 遠程 Raspberry Pi 實例
  2. 我創建了一個簡單的 Dockerfile
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 我在 IntelliJ 的 Docker 實例上選擇部署,select Dockerfile
  2. 它現在在我的 Raspberry Pi 上構建和部署我的應用程序,中間沒有任何本地 Windows 服務

通過運行 Deploy with IntelliJ 的 Dockerfile 成功構建並部署了一個 Docker 的鏡像和容器! 我很開心

您的問題的解決方案不在 Maven 構建步驟,而是在 Docker 構建步驟(在您執行 Maven 構建之后發生)。

我能夠使用 Maven spring-boot:build-image后接此 Docker 命令為 ARM arch 構建圖像:

docker buildx build --platform linux/arm/v7 --tag <username>/<image name>:<tag>.

添加--push標志將在構建圖像時自動將圖像推送到您的注冊表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM