使用github Actions功能构建workflow并且打包java程序docker镜像,最后推送到阿里免费的docker镜像仓库中。

本篇博客为了解决docker hub关闭,镜像无法拉取问题,使用github Actions功能构建workflow并且打包java程序docker镜像,最后推送到阿里免费的docker镜像仓库中。

第一步:

创建阿里云个人镜像仓库

进入阿里云官网,登入自己的阿里云账号,搜索框输入容器镜像服务,进入该页面后创建个人实例

根据官网描述,可以免费创建3个命名空间和300个镜像仓库,对于个人开发者而言,这绝对是足够用的。

设置固定密码

记住账号密码待会儿会在github中用到。接下来创建命名空间

自动创建仓库选项:当开启自动创建后,可以在控制台仓库不存在的情况下,直接推送,系统会自动创建对应的仓库。

默认仓库类型:命名空间可以选择公开或者私有,当你开启“自动创建仓库”功能时,这个配置才有作用。这个配置将决定系统帮你创建的仓库默认是公开还是私有。

最后创建仓库。

点击代码源,对gethub账号进行授权绑定,取消“代码变更自动构建镜像”,勾选“海外机械构建”(因为gethub在国外,如果不选择海外,推送镜像就十分慢。)

这样阿里云镜像仓库创建完毕。

步:创建github账号

利用vpn加速器,进入github官网,注册账号

步:

操作流程: Step 1.登录Gitub,点击右上角+,然后创建一个名为action-sync-images的Github仓库。

Step 2.首先点击仓库里中的settins菜单,选择安全选项卡,点击Action,然后将会进入到 Actions secrets and variables,此时为了账号密码,我们需要提前设置我们Docker hub登录的账号密码到项目的secrets中(PS: fork了此项目的朋友可以自行将对应DocekrHub设置为自己的账号密码)。

Step 3.然后点击仓库里中的Action菜单,在选择一个 simple workflows 将会为我们创建一个新的工作流文件或者在项目根目录自行创建一个.github/workflows/sync-images-dockerHub-example.yaml目录文件。

步:

github/workflows目录下创建文件名sync-image-example.yml

步:

编写sync-image-example.yml文件

name: 拉取镜像推送

on:

  workflow_dispatch:

    inputs:

      IMAGE_NAME:

        description: '原镜像名称:版本'

        required: true

        default: '原镜像名称:版本'

      NEW_NAME:

        description: '同步后镜像名称:版本'

        required: true

        default: '同步后镜像名称:版本'

      TARGET_REGISTRY:

        description: '仓库地址'

        required: true

        default: 'registry.cn-hangzhou.aliyuncs.com'

      TARGET_REPOSITORY:

        description: '命名空间'

        required: true

        default: '命名空间'

      TARGET_DOCKRE_REGISTRY:

        description: '镜像仓库'

        required: true

        default: '镜像仓库'

      ARCH:

        description: '系统架构'

        required: true

        default: 'amd64'

        type: choice

        options:

          - amd64

          - arm64

          - arm/v7

          - arm/v6

          - 386

          - s390x

          - ppc64le

jobs:

  build:

    runs-on: ubuntu-latest

    steps:

      - name: 登录到 Docker 仓库

        id: login

        run: docker login -u 阿里云账号名字 -p 账号密码${{ github.event.inputs.TARGET_REGISTRY }}

        continue-on-error: true

      - name: 检查 Docker 登录成功

        if: ${{ steps.login.outcome == 'success' }}

        run: echo "Docker 登录成功"

      - name: 检查 Docker 登录失败

        if: ${{ steps.login.outcome != 'success' }}

        run: echo "Docker 登录失败"

      - name: 拉取、标记并推送 Docker 镜像

        id: pull_tag_push

        run: |

          docker pull --platform ${{ github.event.inputs.ARCH }} ${{ github.event.inputs.IMAGE_NAME }}

          docker tag ${{ github.event.inputs.IMAGE_NAME }} ${{ github.event.inputs.TARGET_REGISTRY }}/${{ github.event.inputs.TARGET_REPOSITORY }}/${{ github.event.inputs.TARGET_DOCKRE_REGISTRY }}

          docker push ${{ github.event.inputs.TARGET_REGISTRY }}/${{ github.event.inputs.TARGET_REPOSITORY }}/${{ github.event.inputs.TARGET_DOCKRE_REGISTRY }}

        continue-on-error: true

      - name: 检查镜像推送成功

        if: ${{ steps.pull_tag_push.outcome == 'success' }}

        run: echo "Docker 镜像推送成功"

      - name: 检查镜像推送失败

        if: ${{ steps.pull_tag_push.outcome != 'success' }}

        run: echo "Docker 镜像推送失败"

例如:我所拉取的包是wordpress:4.8-apache

文件修改如下图所示:

阿里云账户和密码也得修改成自己的

步:

设置阿里云镜像仓库固定密码(为了方便和阿里云账号密码设置相同)

测试:(以拉取wordpress:4.8-apache为例)

点击左上角code,进入页面后点击sync-image-example.yml然后点击编辑即可以根据自己所想拉取的镜像修改文件。

文件修改完成后,点击右上角的View runs,进入拉取镜像推送界面

点击Run workflow,即可开始拉取镜像推送

最后点击build,查看拉取推送进程,出现改页面即为成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值