zoukankan      html  css  js  c++  java
  • 在github上使用workflow构建docker镜像并推送阿里云

    本篇文章将会简单讲解如何使用github Actions功能构建workflow并且打包java程序docker镜像,最后推送到阿里免费的docker镜像仓库中。

    一、注册阿里云账号,使用容器镜像服务

    注册阿里云账号完成之后,在dashboard中搜索“容器镜像服务”关键字

    image-20210513095921439

    打开该页面,默认页面是这样

    image-20210513100222305

    个人版是免费的,点进去

    image-20210513100348822

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

    点击“访问凭证”按钮,设置固定密码

    image-20210513100541072

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

    image-20210513100823889

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

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

    最后一步:创建仓库,这一步很重要,要特别注意

    image-20210513101222122

    在这一步中会确定下来仓库的类型是公开还是私有,填完相关信息点击下一步进入“代码源”页面,这里使用的是github,所以要先进行github授权,授权完成后选定github对应的项目,最后取消“代码变更自动构建镜像”选项框,勾选“海外机器构建”选项框(因为github在海外,如果不选择这个,我尝试了下,推送镜像的时候会非常慢)。

    image-20210513102008506

    这样,就完成了阿里云上相关的设置。

    我用以上步骤创建了"xxl-job-admin"公开的镜像仓库

    image-20210513102251867

    二、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_USERNAMEsecrets.DOCKER_PASSWORD,之前提到的账号密码,需要在运行workflow之前就设置好。设置方式如下

    image-20210513103140213

    2.运行workflow

    点击项目的Actions按钮,选中对应的workflow,并运行即可

    image-20210513103340902

    点进去可以看到具体的构建日志

    image-20210513103431467

    构建完成之后返回阿里云控制台

    image-20210513103552472

    可以看到镜像已经推送成功。

    点击基本信息可以看到阿里贴心的小提示:如何拉取镜像和推送镜像

    image-20210513103839100

    以我的镜像为例,只需要docker pull registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1即可拉取镜像

    参考文档

    《使用github actions实现自动将镜像推送到自己的镜像仓库》

    《GitHub Actions 手动触发方式进化史》

    《GitHub Actions: Manual triggers with workflow_dispatch》

    https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch

  • 相关阅读:
    CC初试啼声-----演讲与我
    static关键字修饰类
    maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
    Installation Directory must be on a local hard drive解决办法
    回顾JDBC
    java中的定时器
    怎么删除windows中无用的服务
    java实现简单的素数判断
    SQL注入
    @Override must override a superclass method 问题解决
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/14763610.html
Copyright © 2011-2022 走看看