通过GitHub Actions发布Docker镜像

前言

最近在学习KubernetesDocker,遇到了一个问题:

我有一个已经发布的GitHub项目,如何将这个项目打包成Docker镜像,然后再上传到Docker Hub中方便以后直接Pull?

我打开Docker的官方文档,写的是相当的友好了,图文并茂,先是如何创建仓库,然后如何管理仓库,最后如何推送容器镜像…

但是,

我选择捷径,

关键词

步骤

了解GitHub Acitons

了解GitHub Actions

GitHub Actions其实就是一个工作流,准确的说是一个强大到令人发指的工作流,像什么环境变量,运行脚本,接口调用这些基本功能肯定是小儿科,
最强大的当属持续部署CD(Continuous Deployment)持续集成CI (Continuous Integration),它们强大到我都说不清楚!
直接看GitHub Actions入门文档吧~

理论我们点到为止,下面开始实操:

js
先注册一个GitHub账号和一个Docker账号

为GitHub仓库设置Actions

在GitHub中,我们先fork一个自己喜欢的项目,比如WebOCR,在中间的部分,我们可以找到Actions的位置,点击进入:


进入到Actions之后,可以看到整个Actions功能区,我们创建一个新的workflow:



点击New workflow,会显示很多模板,但是我们只选择我们想要的Docker image模板:



打开Docker image之后,简单的编写几行YAML语句,就可以让自动化跑起来,参考如下:


yml

name: Docker Image CI

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v3
    - name: docker login
      uses: docker/login-action@v1
      with:
        username: ${{ secrets.DOCKER_USER }}
        password: ${{ secrets.DOCKER_PASSWORD }}
    - name: Build and Push to Docker Hub
      uses: docker/build-push-action@v2
      with: 
        context: .
        push: true
        tags: naluspot/gitocr:latest

docker.yml配置文件中,我们引用了2个变量,secrets.DOCKER_USERsecrets.DOCKER_PASSWORD,这2个变量是我们Docker的登录账户和密码,我们需要提前在GitHub账户中设置好,点击当前仓库的设置:


至此,我们的整个配置就完成了。

Push & Test

虽然同样的配置文件,但是项目中的代码错综复杂,经过多次的调试和测试之后,我们终于成功地往Docker Hub中推送了第一个Docker image:


直接docker pull一下:


看起来没什么问题,实际上用起来也没什么问题。

GitHub Actions触发测试

我检查了一下workflow的运行记录,只要当前项目有任何的commit,workflow就会触发,触发之后,Docker hub上的镜像就会更新,so easy~



后记

OCR了解一下,秒识别带接口的那种,下一站:

中文WebOCR
优化了之前的2个项目