在 Azure 上使用 Docker Buildkit 和 az acr build

发布于 2025-01-11 00:44:44 字数 116 浏览 0 评论 0原文

我正在寻找一种将 docker buildkit 与 az acr build 结合使用的方法。 我知道可以使用 azure pipeline 但如何将它与 azure cli 一起使用?

问候, 于尔根

i'm looking for a way to use the docker buildkit with az acr build.
I know that its possible with azure pipeline but how to use it with the azure cli?

Regards,
Jürgen

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈年往事 2025-01-18 00:44:44

您可以在 ACR 中使用多步骤任务来设置 DOCKER_BUILD=1,如下所示:

version: v1.1.0
steps:
  - build: -t $Registry/backstage:$ID -f packages/backend/Dockerfile .
    env: 
      - DOCKER_BUILDKIT=1
  - push: 
    - "$Registry/backstage:$ID"

我写了一篇关于此的文章(但它是西班牙语 ☺️):https://www.returngis.net/2024/05/como-construir-una-imagen-en-azure-container-registry-usando-buildkit/

希望有帮助!

You can use multi-step tasks in ACR in order to set DOCKER_BUILD=1 like this:

version: v1.1.0
steps:
  - build: -t $Registry/backstage:$ID -f packages/backend/Dockerfile .
    env: 
      - DOCKER_BUILDKIT=1
  - push: 
    - "$Registry/backstage:$ID"

I wrote an article about this (But It's in Spanish ☺️): https://www.returngis.net/2024/05/como-construir-una-imagen-en-azure-container-registry-usando-buildkit/

Hope it helps!

夜巴黎 2025-01-18 00:44:44

为了澄清 0gis0 所说的内容,并确认它确实是一个可行的解决方案,使用 buildkit 的步骤az acr cli如下。在发布时,您无法通过 ac acr build 来完成此操作,而必须使用 az acr run

  1. 创建一个 Dockerfile ,使用一些仅在 buildkit 中可用的功能。例如缓存挂载:

    # 语法 = docker/dockerfile:1.2
    
    # 详细信息请参见 https://vsupalov.com/buildkit-cache-mount-dockerfile/
    来自 ghcr.io/linuxcontainers/debian-slim:最新
    
    运行 rm -f /etc/apt/apt.conf.d/docker-clean
    RUN --mount=type=cache,target=/var/cache/apt \
        apt-get 更新 && \
        apt-get install -yqq --no-install-recommends \
         考赛&& rm -rf /var/lib/apt/lists/*
    
    CMD [“cowsay”、“哞”]
    
  2. 创建一个 acr 任务文件,在 acr 构建步骤的环境中设置DOCKER_BUILDKIT=1。如果要推送,请确保指定推送步骤,并充分利用 动态任务变量。将此文件命名为 acr-task.yml

    <预><代码>版本:v1.1.0
    步骤:
    - 构建:-t $Registry/{{.Values.image}} 。
    环境:
    - DOCKER_BUILDKIT = 1
    - 推:
    - “$Registry/{{.Values.image}}”

  3. 在 acr 上运行该文件,确保设置 acr 任务文件所需的变量:

    az acr run -f acr-task.yml --registry ; --set image=":" 。
    

To clarify a bit on what 0gis0 said, and to confirm that it is indeed a working solution, the steps to use buildkit with az acr cli are as follows. At the time of posting, you cannot do it via ac acr build, but instead must use az acr run:

  1. Create a Dockerfile, using some feature only available in buildkit. For example, cache mounting:

    # syntax = docker/dockerfile:1.2
    
    # See https://vsupalov.com/buildkit-cache-mount-dockerfile/ for details
    FROM ghcr.io/linuxcontainers/debian-slim:latest
    
    RUN rm -f /etc/apt/apt.conf.d/docker-clean
    RUN --mount=type=cache,target=/var/cache/apt \
        apt-get update && \
        apt-get install -yqq --no-install-recommends \
         cowsay && rm -rf /var/lib/apt/lists/*
    
    CMD [ "cowsay", "moo" ]
    
  2. Create an acr task file, setting DOCKER_BUILDKIT=1 in the environment of the acr build step. Make sure you specify a push step if you want to push, and make good use of dynamic task variables. Call this file something like acr-task.yml:

    version: v1.1.0
    steps:
      - build: -t $Registry/{{.Values.image}} .
        env: 
          - DOCKER_BUILDKIT=1
      - push: 
        - "$Registry/{{.Values.image}}"
    
  3. Run the file on acr, making sure to set the variable(s) you need for the acr task file:

    az acr run -f acr-task.yml --registry <YOUR_REGISTRY> --set image="<REPO>:<TAG>" .
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文