自動構建自己的ASP.NET Core基礎鏡像
- 2020 年 2 月 13 日
- 筆記
在開發過程中,我們可以根據自身情況來定製自己的基礎鏡像,以便加快CICD構建速度以及提高開發體驗。這裡我們就以ASP.NET Core的基礎鏡像為例來進行講解。
本次教程代碼見開源庫:https://github.com/xin-lai/aspnetcore-docker
說明
本庫用於構建項目中使用的aspnetcore的運行時公共基礎鏡像,同時提供了騰訊雲公共鏡像和Docker Hub公共鏡像以供國內外使用。
目的
加快鏡像構建和拉取速度,加速CICD構建以及提高開發體驗。
注意事項
- 時區默認設置為東八區,見「ENV TZ=Asia/Shanghai」
- 默認安裝了libgdiplus等庫,以便支持Excel導入導出
- 目前提供了騰訊雲的公共鏡像和hub.docker的公共鏡像,大家可以按需選擇
公共鏡像地址
目前已提供騰訊雲公共鏡像和DockerHub公共鏡像地址:
- ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime
- magicodes/aspnetcore-runtime
構建說明
使用Azure Pipeline構建和推送騰訊雲鏡像
Azure Pipeline是免費的,對於開源項目,構建沒有限制。我們可以按照以下步驟來完成Pipeline的創建:
- 在項目的設置(Project Settings)中,添加「Docker Registry」的服務連接(Service Connections)

添加好了之後如下所示:

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

接下來界面如下所示:

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

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

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

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

了解了上述內容,我們編寫配置如下所示:
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則使用其自帶的構建服務,使用起來就更為簡單了:
- 創建倉儲

- 設置構建規則

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


是不是很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
接下來,大家就可以根據情況盡情使用了。在國內,我們推薦使用騰訊雲公共鏡像。