自動構建自己的ASP.NET Core基礎鏡像


在開發過程中,我們可以根據自身情況來定制自己的基礎鏡像,以便加快CI\CD構建速度以及提高開發體驗。這里我們就以ASP.NET Core的基礎鏡像為例來進行講解。

本次教程代碼見開源庫:https://github.com/xin-lai/aspnetcore-docker

說明

本庫用於構建項目中使用的aspnetcore的運行時公共基礎鏡像,同時提供了騰訊雲公共鏡像和Docker Hub公共鏡像以供國內外使用。

 

目的

加快鏡像構建和拉取速度,加速CI\CD構建以及提高開發體驗。

注意事項

  • 時區默認設置為東八區,見“ENV TZ=Asia/Shanghai”
  • 默認安裝了libgdiplus等庫,以便支持Excel導入導出
  • 目前提供了騰訊雲的公共鏡像和hub.docker的公共鏡像,大家可以按需選擇

公共鏡像地址

目前已提供騰訊雲公共鏡像和DockerHub公共鏡像地址:

  • ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime
  • magicodes/aspnetcore-runtime

構建說明

使用Azure Pipeline構建和推送騰訊雲鏡像

Azure Pipeline是免費的,對於開源項目,構建沒有限制。我們可以按照以下步驟來完成Pipeline的創建:

  1. 在項目的設置(Project Settings)中,添加“Docker Registry”的服務連接(Service Connections)

    添加服務連接
     

    添加好了之后如下所示:

    服務連接

     

  2. 創建Azure Pipeline

    接下來我們就來創建Azure Pipeline。創建位置如圖所示:

    創建
     

    接下來界面如下所示:

    YAML配置模式

我們選擇方式一,這時需要確保你已經打開並登錄過了你的GitHub。接下來就可以選擇存儲庫了:

選擇倉庫
 

然后會根據存儲庫代碼提供推薦的模板,選擇之后我們就可以看到YAML的編輯界面了:

編輯YAML

編輯過程中都有智能提示,並且右上角有個“Show assistant”按鈕可以打開窗口來添加任務:

選擇Docker任務

我們可以使用此窗口來便捷添加任務:

添加Docker任務

了解了上述內容,我們編寫配置如下所示:

trigger:
- latest
- 2.*
- 3.*

resources:
- repo: self

variables:
  tag: '$(Build.BuildId)'

stages:
- stage: Build
  displayName: Build image
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: 'ubuntu-latest'
    steps:
      - task: Docker@2
        inputs:
          containerRegistry: 'tecent-cloud-xinlai'
          repository: 'magicodes/aspnetcore-runtime'
          command: 'buildAndPush'
          Dockerfile: '**/Dockerfile'
          tags: '$(Build.SourceBranchName)'

配置起來非常簡單,大家可以參考以上配置。其中變量“$(Build.SourceBranchName)”輸出分支短名。

 

使用Docker Hub構建鏡像

Docker hub則使用其自帶的構建服務,使用起來就更為簡單了:

  1. 創建倉儲

    連接開源庫
     
  2. 設置構建規則

    選擇倉庫和設置規則

規則支持正則表達式。然后就配置完了,具體可以參考:https://hub.docker.com/repository/docker/magicodes/aspnetcore-runtime

Docker hub 倉庫首頁
 
構建

是不是很Nice!

 

鏡像標簽說明

如上面所示,我們設置了根據代碼的分支來構建鏡像標簽,相關說明如下:

標簽名稱 說明
latest 最新鏡像,當前為3.1
2.2 Asp.Net Core Runtime 2.2
3.0 Asp.Net Core Runtime 3.0
3.1 Asp.Net Core Runtime 3.1

公共鏡像地址

通過上面的自動構建,我們提供了騰訊雲公共鏡像和DockerHub公共鏡像地址:

  • ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime
  • magicodes/aspnetcore-runtime

接下來,大家就可以根據情況盡情使用了。在國內,我們推薦使用騰訊雲公共鏡像。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM