Github 操作运行器环境不为 arm 图像构建

互联网 行业动态 更新时间:2024-06-13 00:19:06

ten*_*ive 5

你是对的。在没有 Docker Buildx 的情况下,您的 arm64 构建环境中的 Docker 无法构建 arm32v7 映像。你可以通过使用buildx Github Action和qemu action来解决这个问题,它们可以让你的环境准备好构建多架构镜像。

Buildx 是 Docker 为与主机不匹配的目标架构构建镜像的技术(在这种情况下,主机架构是arm64)。您可以在此处阅读有关其工作原理的信息。

QEMU是 Docker buildx 使用的模拟器。这是我在编写多架构工作流时艰难地学到的依赖项。

如需更多参考,请查看此文档:https ://github./docker/build-push-action/blob/master/docs/advanced/multi-platform.md

您应该能够使用以下工作流程构建图像:

name: ci

on:
  push:
    branches:
      - 'master'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v2
      -
        name: Set up QEMU dependency
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Build controller image
        if: steps.changed-files-plantcontroller.outputs.any_changed == 'true'
        uses: docker/build-push-action@v2
        with:
          context: ${{ env.context }}
          tags: ${{ env.image_name_controller }}
          platforms: linux/arm/v7
          push: true
        env:
          context: ./controller

注意:使用您Build controller image编写步骤的方式更新了最后一个构建命令。它只是将 Docker 命令转换为 Docker build-push-action 的构建方式。

您可以使用替代命令代替build-push-action@v2

docker buildx build -t ${{ env.image_name_controller }} --platform linux/arm/v7 --push ${{ env.context }}

该命令假定您要使用该标签推送到 GitHub 存储库。


不相关,但有机会简化您的 Dockerfile。

当你使用 buildx 时,当你拉取的镜像有多个版本时,Docker 可以处理拉取镜像的正确 arm32v7 版本。查看节点图像标签,您会看到linux/arm/v7列为 OS/Arch 标签之一。这意味着如果您认为您想在某个时候为不同的架构构建,您可以简化您的FROM arm32v7/node AS appbuild生产线。FROM node AS appbuild

例如:

amd64为和构建的Github 工作流arm64 根据TARGETPLATFORM拉取相关amd64arm64图像的 Dockerfile

更多推荐

不为,图像,操作,环境,Github

本文发布于:2023-04-20 20:33:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/hyzx/fa937abcb58fa97668a9e7e04b7d68bf.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不为   图像   操作   环境   Github

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!