基于GitHub-Actions实现的Dockerfile自动编译

在大约两个月之前,我尝试基于Golang写了一个图片自动转换为webp的小程序,之后将它使用Docker进行封装📦

我们都知道在Docker的原镜像是通过Dockerfile进行构建的,虽然说Docker支持交叉编译,但是笔者在自己的笔记本上的使用状态并不是很好,arm编译x86失败了

之后了解到GitHub Actions提供了这样的一种虚拟机的解决方案,帮助我们在云端进行构建,接下来是我以自己的项目为例,去编译一个x86的Linux镜像

原项目

原项目在这里:https://github.com/Aicnal/composeImage

当时是在一台云服务上进行的docker build操作的,从这里我们可以看到,如果你要使用GitHub Actions进行构建的话,那么你要先确保你的原项目确确实实能构建出你想要的镜像

开始配置GitHub Actions

首先在项目根目录创建一个.github的文件夹,再在该文件夹内创建一个workflow文件夹,最后在该文件夹下创建docker-build.yml文件,这样的话当你git push之后,GitHub Actions就会自动识别到,并且执行相关指令

下面是具体的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
name: 构建镜像并推送到Docker Hub
on: push

jobs:
docker-build-linux:
name: Docker build Linux
runs-on: ubuntu-latest

steps:
- name: 读取仓库内容
uses: actions/checkout@v4

- name: 登陆DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

- name: 构建并且推送到Docker Hub
uses: docker/build-push-action@v5
with:
push: true
tags: aicnal/linux-image-compressor:latest

其中我们需要到Docker Hub中获取到对应的Token,然后在对应的仓库内添加变量即可

添加完成,确认无误即可git push