在github上使用workflow构建docker镜像并推送阿里云
本篇文章将会简单讲解如何使用github Actions功能构建workflow并且打包java程序docker镜像,最后推送到阿里免费的docker镜像仓库中。
一、注册阿里云账号,使用容器镜像服务
注册阿里云账号完成之后,在dashboard中搜索“容器镜像服务”关键字
打开该页面,默认页面是这样
个人版是免费的,点进去
根据官网描述,可以免费创建3个命名空间和300个镜像仓库,对于个人开发者而言,这绝对是足够用的。
点击“访问凭证”按钮,设置固定密码
记住账号密码待会儿会在github中用到。接下来创建命名空间。
自动创建仓库选项:当开启自动创建后,可以在控制台仓库不存在的情况下,直接推送,系统会自动创建对应的仓库。
默认仓库类型:命名空间可以选择公开或者私有,当你开启“自动创建仓库”功能时,这个配置才有作用。这个配置将决定系统帮你创建的仓库默认是公开还是私有。
最后一步:创建仓库,这一步很重要,要特别注意
在这一步中会确定下来仓库的类型是公开还是私有,填完相关信息点击下一步进入“代码源”页面,这里使用的是github,所以要先进行github授权,授权完成后选定github对应的项目,最后取消“代码变更自动构建镜像”选项框,勾选“海外机器构建”选项框(因为github在海外,如果不选择这个,我尝试了下,推送镜像的时候会非常慢)。
这样,就完成了阿里云上相关的设置。
我用以上步骤创建了"xxl-job-admin"公开的镜像仓库
二、github创建workflow
https://github.com/kdyzm/xxl-job 这个项目是我克隆的xxljob的官方项目,基于2.3.0版本修改了些东西最终新增了2.4.1版本,相关的修改可以参考我之前的文章:xxl-job滥用netty导致的问题和解决方案。我计划打包docker镜像并且以容器方式运行,所以第一步,就是要将程序打包并且构建docker镜像,最终推送阿里云。
1.创建workflow
在项目根目录创建.github目录,然后在里面创建workflows子目录,子目录中创建docker-image.yml文件,文件内容如下
name: Docker Image CI
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: mvn clean package -DskipTests
- name: Build the Docker image
run: |
docker version
# 登录阿里云镜像仓库
docker login --username=${{ secrets.DOCKER_USERNAME }} --password=${{ secrets.DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
cd xxl-job-admin
# 使用Dockerfile构建镜像
docker build . --file Dockerfile --tag registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1
# 推送镜像到镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1
其中有两个环境变量secrets.DOCKER_USERNAME
和secrets.DOCKER_PASSWORD
,之前提到的账号密码,需要在运行workflow之前就设置好。设置方式如下
2.运行workflow
点击项目的Actions按钮,选中对应的workflow,并运行即可
点进去可以看到具体的构建日志
构建完成之后返回阿里云控制台
可以看到镜像已经推送成功。
点击基本信息可以看到阿里贴心的小提示:如何拉取镜像和推送镜像
以我的镜像为例,只需要docker pull registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1
即可拉取镜像
参考文档
《使用github actions实现自动将镜像推送到自己的镜像仓库》
《GitHub Actions: Manual triggers with workflow_dispatch》
https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体