
前言
最近在学习Kubernetes和Docker,遇到了一个问题:
我有一个已经发布的GitHub项目,如何将这个项目打包成Docker镜像,然后再上传到Docker Hub中方便以后直接Pull?
我打开Docker的官方文档,写的是相当的友好了,图文并茂,先是如何创建仓库,然后如何管理仓库,最后如何推送容器镜像…
但是,

我选择捷径,
关键词
- Brand New Server: Debian Server
不是我喜新厌旧,谁不爱大内存呢? - 树莓派
呃,过两天就把所有的项目都迁过去 - GitHub Acitons(官方自带简体中文了解一下)
- Docker(Pull在手,天下我有)
- 马伯恩的小站
步骤
了解GitHub Acitons
了解GitHub Actions
GitHub Actions其实就是一个工作流,准确的说是一个强大到令人发指的工作流,像什么环境变量,运行脚本,接口调用这些基本功能肯定是小儿科,
最强大的当属持续部署CD(Continuous Deployment) 和持续集成CI (Continuous Integration),它们强大到我都说不清楚!
直接看GitHub Actions入门文档吧~
理论我们点到为止,下面开始实操:
先注册一个GitHub账号和一个Docker账号
为GitHub仓库设置Actions
在GitHub中,我们先fork一个自己喜欢的项目,比如WebOCR,在中间的部分,我们可以找到Actions
的位置,点击进入:
进入到Actions
之后,可以看到整个Actions
功能区,我们创建一个新的workflow:
点击New workflow
,会显示很多模板,但是我们只选择我们想要的Docker image
模板:
打开Docker image之后,简单的编写几行YAML
语句,就可以让自动化跑起来,参考如下:
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_USER
和 secrets.DOCKER_PASSWORD
,这2个变量是我们Docker的登录账户和密码,我们需要提前在GitHub账户中设置好,点击当前仓库的设置:
至此,我们的整个配置就完成了。
Push & Test
虽然同样的配置文件,但是项目中的代码错综复杂,经过多次的调试和测试之后,我们终于成功地往Docker Hub中推送了第一个Docker image:
直接docker pull一下:
看起来没什么问题,实际上用起来也没什么问题。
GitHub Actions触发测试
我检查了一下workflow的运行记录,只要当前项目有任何的commit,workflow就会触发,触发之后,Docker hub上的镜像就会更新,so easy~