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

如何在GitHub Action中自制Docker镜像并使用,无需镜像仓库?

实现无Docker仓库的GitHub Actions工作流(自托管Linux Runner)

完全可以在自托管Linux Runner上实现不依赖任何Docker镜像仓库的工作流,直接本地构建镜像并在其中执行任务,最后彻底清理。以下是针对你的需求设计的完整方案:

完整工作流配置

name: 无仓库Docker构建与发布
on: [push, pull_request]

jobs:
  build-and-publish:
    runs-on: self-hosted
    steps:
      - name: 克隆项目代码
        uses: actions/checkout@v4

      - name: 克隆第三方Dockerfile仓库
        run: git clone <第三方Git地址> ./docker-build-context

      - name: 构建自定义Docker镜像
        id: build-image
        run: |
          # 生成唯一镜像标签,避免重复冲突
          IMAGE_TAG="custom-build-$(date +%Y%m%d%H%M%S)"
          docker build -t $IMAGE_TAG ./docker-build-context
          # 将镜像标签传递给后续步骤
          echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT

      - name: 在自定义镜像中构建软件项目
        run: |
          # 挂载当前项目目录到容器内,以便导出构建产物
          docker run --rm -v $PWD:/project ${{ steps.build-image.outputs.image_tag }} \
          sh -c "cd /project && 执行你的项目构建命令(如make build、python setup.py sdist等)"

      - name: 上传产物到PyPI/NuGet
        run: |
          # 执行上传命令,示例:
          # twine upload dist/*
          # nuget push *.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey ${{ secrets.NUGET_API_KEY }}

      - name: 彻底清理Docker资源
        if: always()  # 无论前面步骤成功失败都执行清理
        run: |
          # 删除构建的自定义镜像
          docker rmi -f ${{ steps.build-image.outputs.image_tag }} || true
          # 清理可能残留的容器(如果run命令没加--rm)
          docker rm -f $(docker ps -aq --filter ancestor=${{ steps.build-image.outputs.image_tag }}) || true
          # 删除克隆的Dockerfile临时目录
          rm -rf ./docker-build-context

关键细节说明

  • 唯一镜像标签:用时间戳生成标签,避免自托管Runner上的镜像名称冲突,确保每次构建都是全新镜像。
  • 容器目录挂载:通过-v $PWD:/project将本地项目目录挂载到容器内,这样容器中构建的产物会同步到主机,方便后续上传。
  • 强制清理:if: always()保证无论构建成功或失败,都会执行清理步骤,避免自托管Runner上积累无用镜像和文件;|| true防止清理命令报错导致工作流失败。
  • 自托管Runner权限:确保自托管Runner的运行用户拥有Docker操作权限(可将用户加入docker组),避免执行Docker命令时出现权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:07