天天看點

自動建構自己的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)
自動建構自己的ASP.NET Core基礎鏡像說明

添加好了之後如下所示:

自動建構自己的ASP.NET Core基礎鏡像說明
  1. 建立Azure Pipeline

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

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

接下來界面如下所示:

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

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

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

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

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

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

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

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

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

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

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. 建立倉儲
自動建構自己的ASP.NET Core基礎鏡像說明
  1. 設定建構規則
自動建構自己的ASP.NET Core基礎鏡像說明

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

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

是不是很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

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