GithubAction与阿里云镜像仓库自动化实现Docker镜像构建与推送
使用Docker进行容器化的项目部署已经是非常方便了 , 但是如果线上环境出现了一些小的问题 ,往往需要我们去手动的去修改 , 重新部署, 重复的无意义劳动显然非常令人讨厌。
对于懒人来说自动化的配置显然是最舒服的
谁能理解数据库密码因为数字开头导致线上数据库连接不上 ,
*docker build docker run docker rm docker rmi 敲了一下午晚上闭上眼全是Docker **的痛苦啊???
那么接下来就让我们一起动手去实现 使用GithubAction与阿里云镜像仓库自动化实现Docker镜像构建与推送
创建阿里云镜像仓库
这里使用阿里云的容器镜像服务
然后我们进入控制台, 找到代码源, 选择绑定github(如果使用别的平台那么就选择别的代码源即可)
接着我们创建镜像仓库
创建好了之后页面如下
配置Github Action
准备秘钥
在前面我们在阿里云中配置镜像仓库的时候设置了账户以及密码 , 这里首先需要在Github中设置以供使用
找到 Settings -> Secrets and variables -> Actions -> New repository secret
手动进行添加即可 , 设置成功后可以看到如下内容 (请忽略ID_RSA以及ID_RSA_PUB)
创建工作流
我们的目的是
- 构建Docker镜像
- 推送到阿里云仓库
那么可以简单总结工作流的主要工作流程
- 安装JDK (这里自带了Maven的环境)
- 通过Maven构建Jar包(如果是gradle项目请注意更改这一步的内容)
- 登录到阿里云镜像仓库(这里需要使用到前面我们配置的
REGISTRY PASSWORDREGISTRY USERNAME) - 构建Docker镜像(通过我们事先准备好的Dockerfile)
- 推送镜像到阿里云镜像仓库
注意前两个步骤非常重要 , GithubAction的运行环境就是一个非常干净的操作系统(所以环境都需要我们自己手动去配置)
这里使用Dockerfile实际上还有一个大坑
原因也很简单 , 原本的Dockerfile是用来手动进行镜像构建以及项目部署的 , 使用的路径都是自定义的路径 , 但是这里我们使用Github Action , 就需要去通过调试来更改我们的配置(workflow文件以及Dockerfile都需要更改)
原本我的Dockerfile是这样的
1 | FROM openjdk:8-jdk-alpine |
而我在部署的时候执行的Shell命令是这样的
1 | !/bin/bash |
这里全程的工作目录都是/app , 因此毫无例外的 , 前几次的workflows全部都失败了
好在通过查询错误信息:
不难理解应该是workflow在运行的时候没有找到某某文件
那么我们简单的在workflow的配置中添加这样的一条配置
1 | - name: Show Directory and Files |
pwd: 打印当前的工作目录
ls -la : 打印当前工作目录下的文件
通过这样简单的调试 , 答案也很明显了

可以看到这里的工作目录是 /home/runner/work/hxBI/hxBI , 并不跟我们所期望的/app 相同
接着选择修改Dockerfile文件的配置
注意maven package 的结果在target目录中
1 | # 把 jar 复制到当前的目录 |
这里不建议使用绝对路径 , 因为我们只要保证文件的相对路径是确定的 , 那么运行就不会出现问题
接着运行workflow

访问阿里云镜像服务
到这里 , 我们的Github Action已经是配置完成了。
这里给出我的完整yml文件的配置
1 | name: hxbi-backend-DockerImageCI |
通过镜像仓库进行项目部署
首先 , 由于我们创建的仓库一般是私有的仓库 , 因此如果远程拉取还是需要登录的
docker login --username=*** --password=**** registry.cn-*****.aliyuncs.com
如果登录成功可以看到

接着通过docker pull拉取我们的镜像 ( 注意需要提前选择好镜像版本)
docker pull registry.cn-***.aliyuncs.com/hxbi/hxbi-backend:**********
接着通过docker images查看
有了镜像之后的操作就非常简单了 , 在此不再赘述












