You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM自托管运行器执行Docker build-push-action时提示iidfile缺失

解决GitHub Actions自托管ARM运行器上Docker Buildx的文件缺失错误

问题描述

将GitHub Actions工作流从ubuntu-latest切换到ARM架构的自托管运行器后,执行Docker构建推送步骤时出现如下错误:

Error: buildx failed with: ERROR: open /tmp/docker-build-push-m9gSaF/iidfile: no such file or directory

检查运行时的/tmp目录,发现docker-build-push相关子目录未生成任何内容。对应的工作流配置如下:

name: Build

on:
  push:
    branches:
      - 'main'

jobs:
  docker:
    runs-on: self-hosted
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: frontend
          file: frontend/Dockerfile
          platforms: linux/arm64
          push: true
          tags: ghcr.io/langaracpsc/langaracpsc-next:latest

工作流运行实例:https://github.com/langaracpsc/langaracpsc-next/actions/runs/6101537965/job/16558257594

解决办法

1. 更新Docker Buildx版本

ARM环境下部分旧版Buildx存在路径兼容性问题,直接在自托管运行器上执行命令更新:

docker buildx install

或者在工作流中强制使用最新版Buildx,修改setup-buildx-action步骤:

- name: Set up Docker Buildx
  uses: docker/setup-buildx-action@v2
  with:
    version: latest

2. 修复/tmp目录权限

自托管运行器用户需要对/tmp目录有完整的读写权限,执行以下命令修复:

sudo chmod 1777 /tmp

也可以在工作流中添加前置检查步骤:

- name: Ensure /tmp has correct permissions
  run: |
    ls -ld /tmp
    sudo chmod 1777 /tmp || true

3. 指定自定义Buildx临时目录

避免系统/tmp的自动清理或权限限制干扰,在工作流中创建自定义临时目录并指定给Buildx:

- name: Prepare custom buildx temp directory
  run: |
    mkdir -p /home/runner/buildx-tmp
    chmod 777 /home/runner/buildx-tmp

- name: Build and push
  uses: docker/build-push-action@v3
  with:
    context: frontend
    file: frontend/Dockerfile
    platforms: linux/arm64
    push: true
    tags: ghcr.io/langaracpsc/langaracpsc-next:latest
    build-args: |
      BUILDX_TMPDIR=/home/runner/buildx-tmp

4. 启用Docker Buildkit特性

确保Docker daemon开启Buildkit支持,编辑/etc/docker/daemon.json(若不存在则创建):

{
  "features": {
    "buildkit": true
  }
}

然后重启Docker服务:

sudo systemctl restart docker

内容的提问来源于stack exchange,提问作者Highfire1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:21