国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Github Actions 推送代碼構建 Docker 鏡像并 push 到倉庫

這篇具有很好參考價值的文章主要介紹了Github Actions 推送代碼構建 Docker 鏡像并 push 到倉庫。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Github Actions 推送代碼構建 Docker 鏡像并 push 到鏡像倉庫

需要解決的問題

解決 ci/cd 流程,在 推送代碼到 github 時,github 的 action 能夠自動構建代碼并發(fā)布到鏡像倉庫,之后運行 docker-compose 文件,啟動項目訪問。

問題前置分析

目前比較流行的 ci/cd 解決方案為:

  1. github + jenkins
  2. Github/gitlab + jenkins + docker hub + Docker/K8s
  3. Github + docker hub + Docker/k8s

上述兩種方案:

  1. 配置 github 的 webhook 鉤子,在 push 代碼之后,主動去通知 jenkins,構建鏡像完成項目部署;

  2. 配置 github 的 webhook 鉤子,在 push 代碼之后,主動去通知 jenkins,完成項目的構建和打包,之后上傳鏡像到 docker hub 倉庫,在 github action 中調用服務器中的 docker 完成服務的部署,實現(xiàn) ci/cd 自動化流程;

    上述兩種方案存在的缺點:

    • 沒有鏡像倉庫存儲 dokcer images,出現(xiàn)問題沒辦法回滾,擴容等;
    • Jenkins 拉取 github 會有較大幾率超時,拉取失?。?/li>
    • Jenkins 配置相對繁瑣,上手難度太高;
    • 沒有 容器管理工具,無法及時得知 容器運行狀態(tài)。
  3. 舍棄掉之前的 jenkins,由 github action 完成打包和鏡像的推送,作為容器化之后的首選;

    能夠有效解決上述方案存在的缺點,唯一的缺點是需要在 github action 配置時多花時間。

前置準備

這里介紹一些必要的組件,使用方法自己百度。

組件介紹

Docker hub
  1. Aliyun AKC 服務 https://cr.console.aliyun.com/
  2. Docker hub 官方 https://hub.docker.com/
  3. 私有的 Harbor 服務 https://goharbor.io/
容器管理平臺
  1. Portainer
  2. Rainbond https://www.rainbond.com/usescene/AppManagement/
  3. Ranchar/k8s https://docs.rancher.cn/

包含 Docker 和 k8s 的管理平臺

Github action secrets 設置

repo -> settings -> Security -> Actions secrets and variables -> secrets 中設置

deploy-docker.yml

# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Build And Deploy Docker

# github action 的觸發(fā)時機
on:
  push:
    # 指定分支觸發(fā)
    branches: 
      - "master"
    # 指定路徑或者文件,當此路徑下的文件發(fā)生變化時,執(zhí)行此 action
    paths:
      - 'index.html'
    # 發(fā)布 tag 時執(zhí)行此 action
    tags:
      - 'v*'
  # 指定分支發(fā)生 pr 操作時觸發(fā)    
  pull_request:
    branches: [ "master" ]

# env 環(huán)境變量,為下面的 action 腳本提供
env:
  # Use docker.io for Docker Hub if empty
  REGISTRY: ${{ secrets.REGISTRY }}
  # github.repository as <account>/<repo>
  IMAGE_NAME: ${{ github.repository }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    # 提供 docker 元數(shù)據(jù),構建 docker images tag 時使用
    - name: Extract Docker metadata
      id: meta
      uses: docker/metadata-action@v4
      with:
        images: ${{ env.IMAGE_NAME }}
        tags: |
          # set latest tag for default branch
          type=raw,value=latest,enable={{is_default_branch}}
          # tag event
          type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
  
    # 構建鏡像 使用 docker/Build-And-push@v5 插件有問題
    - uses: actions/checkout@v2
    - name: Build Docker Image  
      run: |
        docker build -t ${{ env.REGISTRY }}/${{ steps.meta.outputs.tags }} -f ./docker/nginx/Dockerfile .
    - name: Push Docker Image
      run: |
        docker login --username=${{ secrets.DOCKER_USERNAME }} --password ${{ secrets.DOCKER_PASSWORD }} ${{ env.REGISTRY }}
        docker push ${{ env.REGISTRY }}/${{ steps.meta.outputs.tags }}

    # 運行 docker 服務
    # 另外一種選擇是通過 scp 將文件傳到指定服務器,完成 docker-compose 啟動
    - name: Deploy Docker App
      uses: appleboy/ssh-action@master
      env:
        TZ: Asia/Shanghai
      with: 
        host: ${{ secrets.HOST }}
        username: ${{ secrets.HOST_USERNAME }}
        key: ${{ secrets.HOST_SSHKEY }}
        port: ${{ secrets.PORT }}
        script: |
          # 獲取 docker-compose 文件
          wget https://raw.githubusercontent.com/${{ env.IMAGE_NAME }}/master/docker/docker-compose.yml
          ls
          cat docker-compose.yml
          docker-compose down -v
          docker-compose up -d

之上的一些 action 插件都可是使用其他的代替

  • https://github.com/aliyun/acr-login
  • https://docs.github.com/zh/actions/publishing-packages/publishing-docker-images#publishing-images-to-github-packages

效果展示

示例倉庫:https://github.com/yuluo-yx/uipaas-ci-cd-test文章來源地址http://www.zghlxwxcb.cn/news/detail-799775.html

到了這里,關于Github Actions 推送代碼構建 Docker 鏡像并 push 到倉庫的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • docker鏡像push到倉庫

    docker鏡像push到倉庫

    鏡像可以很方便直接 push 到 docker 的公共倉庫或阿里云倉庫 1、登錄docker hub創(chuàng)建自己的倉庫地址: https://hub.docker.com/repository/create 創(chuàng)建時,倉庫名稱要與鏡像名稱對應 登錄docker倉庫,輸入密碼 將鏡像打成標簽 將標簽上傳鏡像倉庫 下載自己的鏡像 修改鏡像名稱

    2024年02月16日
    瀏覽(23)
  • Docker -- 鏡像倉庫(搭建私有鏡像倉庫、向鏡像倉庫推送鏡像、從鏡像倉庫拉取鏡像)

    Docker -- 鏡像倉庫(搭建私有鏡像倉庫、向鏡像倉庫推送鏡像、從鏡像倉庫拉取鏡像)

    搭建鏡像倉庫可以基于Docker官方提供的DockerRegistry來實現(xiàn)。 官網地址 Docker 官方的 Docker Registry 是一個基礎版本的 Docker 鏡像倉庫,具備倉庫管理的完整功能,但是沒有圖形化界面。 搭建方式比較簡單,命令如下: 命令中掛載了一個數(shù)據(jù)卷 registry-data 到容器內的 /var/lib/regist

    2024年02月04日
    瀏覽(23)
  • 【Docker】推送鏡像到私有倉庫

    目錄 退出登錄 ?私有倉庫登錄 ?構建鏡像時指定tag 提交鏡像到遠程倉庫? 現(xiàn)有鏡像指定tag 退出登錄 沒登錄過的跳過這步? ?私有倉庫登錄 假設你的倉庫連接是https://xxx.xxx.cn,賬戶密碼都是root,那么命令就是: docker login https://xxx.xxx.cn -u root -p root ?構建鏡像時指定tag ?一般

    2024年02月06日
    瀏覽(22)
  • Docker 將容器打包成鏡像&推送鏡像到倉庫

    Docker 將容器打包成鏡像&推送鏡像到倉庫

    示例: 1.登錄倉庫進行身份驗證 2.將本地鏡像重命名與倉庫格式相匹配 3.推送鏡像到倉庫

    2024年02月09日
    瀏覽(22)
  • 推送docker鏡像到私有/DockerHub倉庫

    推送docker鏡像到私有/DockerHub倉庫

    以定制jdk11鏡像為例: 新建文件夾jdk11 下載orcale jdk11,復制orcale jdk11 到剛剛新建文件夾jdk11下 新建Dockerfile,鏡像對字符集和時間都做了處理 創(chuàng)建鏡像 給鏡像打標簽 登錄Harbor私服 推送鏡像 過程中常見錯誤解決方法 docker配置中添加私服地址,重啟docker服務 訪問https://hub.doc

    2024年02月15日
    瀏覽(21)
  • Docker鏡像的拉取和推送(阿里云鏡像倉庫)

    Docker鏡像的拉取和推送(阿里云鏡像倉庫)

    簡介: 阿里云的容器鏡像服務個人版是不要錢的,個人可以免費創(chuàng)建3個命名空間和最多可創(chuàng)建300個免費的鏡像倉庫供以使用,平時可以使用這項服務對個人的鏡像進行管理,就可以不使用國外的DockerHub來對鏡像進行管理了,大大節(jié)省了拉取和推送的時間,本文將介紹如何把

    2024年01月23日
    瀏覽(22)
  • 【Docker篇】從0到1搭建自己的鏡像倉庫并且推送鏡像到自己的倉庫中

    【Docker篇】從0到1搭建自己的鏡像倉庫并且推送鏡像到自己的倉庫中

    Docker私有倉庫的存在為用戶提供了更高的靈活性、控制和安全性。與使用公共鏡像倉庫相比,私有倉庫使用戶能夠完全掌握自己的鏡像生命周期。 首先,私有倉庫允許用戶在本地或云服務器上部署和管理自己的鏡像存儲庫。這意味著用戶可以根據(jù)自己的需求和規(guī)模進行擴展和

    2024年01月19日
    瀏覽(45)
  • idea配置docker推送本地鏡像到遠程私有倉庫

    idea配置docker推送本地鏡像到遠程私有倉庫

    目錄 1,搭建遠程Docker 私有倉庫 Docker?registry 2,Windows10/11系統(tǒng)上安裝Docker Desktop 3,idea 配置遠程私有倉庫地址 4,idea 配置Docker 5,idea在本地構建鏡像 6,推送本地Docker鏡像到遠程 Docker私有倉庫 7,測試/生產環(huán)境從 Docker?registry 私有倉庫中拉取鏡像 1,搜索鏡像 2,拉取鏡像并

    2024年02月03日
    瀏覽(61)
  • 解決Git中“error: failed to push some refs“問題,輕松推送代碼到遠程倉庫

    引言: 在使用Git進行版本控制時,我們經常需要將本地代碼推送到遠程倉庫。然而,有時候在執(zhí)行推送操作時,可能會遇到\\\"error: failed to push some refs\\\"的錯誤提示。本文將詳細介紹如何解決這個問題,并提供詳細的操作步驟和代碼示例。 步驟1:檢查當前分支狀態(tài) 首先,我們需

    2024年02月05日
    瀏覽(43)
  • git關聯(lián)兩個遠程倉庫,一個倉庫(github)拉取代碼,另一個倉庫(gitlab)推送代碼

    git關聯(lián)兩個遠程倉庫,一個倉庫(github)拉取代碼,另一個倉庫(gitlab)推送代碼

    有這種情況,小伙伴們在github上下載的開源項目(該開源項目還在繼續(xù)開發(fā)維護),然后自己下載下來進行二次開發(fā),然后又要把項目推送自己的gitlab私服上,這個時候不得不本地代碼關聯(lián)兩個遠程倉庫。接下來我將一步步講解如何關聯(lián)兩個遠程倉庫,并拉取github的開源項目

    2024年02月12日
    瀏覽(105)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包