首页 > 其他分享 >利用GithubActions构建和拉取docker镜像

利用GithubActions构建和拉取docker镜像

时间:2024-11-20 16:09:04浏览次数:1  
标签:name space image GithubActions repo 和拉取 docker true

背景

因docker全面被墙,pull/build变得极为困难,考虑使用GithubActions帮助我们解决这个问题。

实现

Pull

核心思想是调用docker pull再将image打包至artifacts进行取回。
额外增加了架构选择和释放空间选项,较大的image建议勾选防止run out of space

name: Pull and Save Docker Image
on:
  workflow_dispatch:
    inputs:
      free_space:
        description: 'Free disk space before pulling'
        type: boolean
        default: false
      image:
        description: Docker image name
        required: true
        default: 'alpine:latest'
      arch:
        type: choice
        description: Select OS/ARCH
        options:
        - linux/amd64
        - linux/arm64
        - linux/arm/v7
        
jobs:
  pull_and_upload:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Free Disk Space (Ubuntu)
      if: ${{ github.event.inputs.free_space == 'true' }}
      uses: jlumbroso/free-disk-space@main
      with:
        # this might remove tools that are actually needed,
        # if set to "true" but frees about 6 GB
        tool-cache: false

        # all of these default to true, but feel free to set to
        # "false" if necessary for your workflow
        android: true
        dotnet: true
        haskell: true
        large-packages: true
        docker-images: true
        swap-storage: true

    - name: Pull Docker Images
      run: |
        docker pull "${{ github.event.inputs.image }}" --platform "${{ github.event.inputs.arch }}"

    - name: Upload image
      uses: ishworkh/[email protected]
      with:
        image: "${{ github.event.inputs.image }}"
        retention_days: "1"

Build

需要先clone需要构建的repo用于提供Dockerfile及依赖,调用docker build同样使用artifacts取回。

name: Build Docker Image By Git Repo
on:
  workflow_dispatch:
    inputs:
      free_space:
        description: 'Free disk space before building'
        type: boolean
        default: false
      repo_url:
        description: 'HTTP(S) git repo url with Dockerfile'
        required: true
        default: 'https://github.com/foxglove/nuscenes2mcap.git'  # Default repo with Dockerfile

jobs:
  build_and_upload:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Free Disk Space (Ubuntu)
      if: ${{ github.event.inputs.free_space == 'true' }}
      uses: jlumbroso/free-disk-space@main
      with:
        # this might remove tools that are actually needed,
        # if set to "true" but frees about 6 GB
        tool-cache: false

        # all of these default to true, but feel free to set to
        # "false" if necessary for your workflow
        android: true
        dotnet: true
        haskell: true
        large-packages: true
        docker-images: true
        swap-storage: true

    - name: Clone git repo and build docker image
      run: |
        repo_url="${{ github.event.inputs.repo_url }}"
        git clone ${repo_url} repo
        cd repo
        docker build . -t repo:latest

    - name: Upload image
      uses: ishworkh/[email protected]
      with:
        image: "repo:latest"
        retention_days: "1"

成果

直接Fork成品仓库打开Actions权限即可完成构建。
azureology/DockerPullerBuilder: Painless pull and build image using Github Actions

标签:name,space,image,GithubActions,repo,和拉取,docker,true
From: https://www.cnblogs.com/azureology/p/18558625

相关文章

  • 【Redis集群实战】Redis 以及 Redis Sentinel 的 Docker部署
    Redis基本说明这里我是用的是docker。既然使用docker那么就需要配置两个组件一个Redis一个RedisSentinel我们可以使用docker-compose来启动一组docker安装docker-compose下载docker-compose安装包这里面直接从github下载。并且放在了/usr/local/bin/docker-c......
  • 使用docker启动mysql/postgresql服务
    首先安装和启动docker然后创建容器:MySQLfilename:begin_mysql_server_in_docker.shcontentdockerrun-d-p3306:3306--namemysql_latest-eMYSQL_ROOT_PASSWORD=123456mysql:latestPostgreSQLfilename:begin_postgres_server_in_docker.shcontent:#......
  • 蓝易云 - 使用Debian、Docker和Nginx部署Web应用教程
    在Debian上使用Docker和Nginx部署Web应用是一种常见的配置方式。下面是一个简单的教程:安装Docker:在Debian上安装Docker,运行以下命令:apt-getupdateapt-getinstall-yapt-transport-httpsca-certificatescurlgnupglsb-releasecurl-fsSLhttps://download.docker.co......
  • 【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
    文章目录:【Linux篇】Docker的容器之海与镜像之岛:于Linux系统内探索容器化的奇妙航行前言安装docker-centos7【Linux篇】Docker的容器之海与镜像之岛:于Linux系统内探索容器化的奇妙航行......
  • docker搭建hadoop集群linuxcentos(为分布式、完全分布式)
    docker搭建hadoop集群linuxcentos(为分布式、完全分布式) 第1章写在前面必读1.1Hadoop生态简单说明说明:hadoop只是一个存储数据的平台,mapreduce是一个计算框架,需要编程人员去编写处理数据的程序。然后hadoop是一个生态,就是说在其上还运行着hbase数据库,sqoop,shark等等工具,这样才......
  • h基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群adoop集群搭建(docker)
     基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群 1、设置主机上的虚拟缓存当本地内存不足时,可以使用虚拟内存将一些内存数据转移到硬盘上,从而扩展计算机的内存容量。这样可以让计算机运行更复杂、更占用内存的程序,不会出现内存不足的情况。减轻物理存储器......
  • 如何使用docker去对sftp去做容器化部署?
    安装过程中遇到的问题:1.0拉取sftp的镜像失败怎么办?(后续:这个地址拉取镜像失败.)sudodockerpullatmoz/sftp解决:配置Docker使用阿里云镜像源:sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://fecfboad.mir......
  • 关于Docker
    如果你熟悉VMware等类似虚拟化平台,可以暂时把Docker理解为轻量化的VMware,但又不完全相同,区别如下:虚拟化级别:VMware:VMware工作在硬件虚拟化级别,它通过模拟整个硬件环境来运行完整的操作系统。这意味着每个虚拟机(VM)都有自己的操作系统副本。Docker:Docker工作在操作系统级别,它使......
  • 快速创建可移植的深度学习Docker环境
    0镜像拉取首先拉取带有cuda的镜像:nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu18.04现在镜像被ban了,推荐使用国内镜像站,这里我用的nvcr.io/nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu18.04dockerpullnvcr.io/nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu18.04当然也可以......
  • web专题:ctf专业竞赛平台!在 Ubuntu 上部署 CTFd 与 Docker!全网最详细版本,少走弯路!
    docker是什么?Docker是一个开源的容器化平台,用于开发、发布和运行应用程序。它通过将应用程序及其依赖项打包成一个容器,使应用在任何支持Docker的环境中都能保持一致性。容器本质上是轻量级、独立的运行环境,包含了应用程序和它所需的所有资源,但与虚拟机不同的是,容器共享主机......