【问题标题】:How do I define architecture arm64 when building the docker image through Maven spring-boot:build-image on Windows?在 Windows 上通过 Maven spring-boot:build-image 构建 docker 映像时如何定义架构 arm64?
【发布时间】: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 都被拒绝访问。

标签: spring-boot docker maven intellij-idea


【解决方案1】:

我发现答案是直到现在我还无法运行的事情之一 - 使用 Dockerfile。

  1. 在 IntelliJ 中,我通过 Services 连接到本地网络上的 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 实例上部署并选择 Dockerfile
  2. 它现在可以在我的 Raspberry Pi 上构建和部署我的应用程序,而中间没有任何本地 Windows 服务

通过运行 Deploy with IntelliJ 的 Dockerfile 成功构建和部署 Docker 镜像和容器! 我很高兴

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2021-03-31
    • 2020-07-13
    • 2021-05-03
    • 2021-03-03
    • 2021-01-04
    相关资源
    最近更新 更多