利用 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 镜像,推送到私有仓库