Skip to content
On this page

利用 github + github action 自动构成 docker 镜像并推送到阿里云私有镜像库

一、项目搭建

github 创建项目后 clone 到本地,初始化后,在根目录创建 dockerFile 文件

FROM nginx:1.15-alpine

COPY html /etc/nginx/html
WORKDIR /etc/nginx/html

后续会根据此文件创建 docker 镜像

二、注册阿里云私有镜像服务

访问 容器镜像服务 根据步骤即可创建个人私有镜像仓库,主要操作如下

2.1、登录阿里云Docker Registry

docker login --username=29964*****@qq.com registry.cn-hangzhou.aliyuncs.com

2.2、拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/[命名空间]/[镜像名称]:[镜像版本号]

2.3、镜像推送到Registry

shell
$ docker login --username=29964*****@qq.com registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/[命名空间]/[镜像名称]:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/[命名空间]/[镜像名称]:[镜像版本号]

三、workflow

github action 可在代码提交时,自动执行代码编译、镜像构建等工作。根目录新建 .github/workflows/deploy.yml 文件,内容如下

yaml
name: k8s-image-ci

on:
  push:
    branches: [main] # main 分支有 push 时触发
    
# 工作流程,可包含多个作业
jobs:

  # 作业1名称
  build:
    # 指定的运行器环境
    runs-on: ubuntu-latest
    
    # 作业包含一系列任务,称为 steps
    steps:
      # 检出当前代码(触发工作流时的commits)
      - name: Checkout 🛎️
        uses: actions/checkout@v2
        
      # 登录到阿里云容器镜像服务
      - name: Login to Ali Docker
        uses: docker/login-action@v1
        # 配置登录信息,secrets 变量在 github settings -> secrets 中设置
        with:
          registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}
          username: ${{ secrets.ALI_DOCKER_HUB_USN }}
          password: ${{ secrets.ALI_DOCKER_HUB_PWD }}

      # 构建镜像并上传到阿里云容器镜像仓库 (自行百度创建自己的镜像仓库)
      - name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: registry.cn-hangzhou.aliyuncs.com/yjay/k8s-cicd:latest

在推送代码到仓库的 main 分支后,会自动构建最新的 docker 镜像,推送到私有仓库