在開發過程中,我們可以根據自身情況來定制自己的基礎鏡像,以便加快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的建立:
- 在項目的設定(Project Settings)中,添加“Docker Registry”的服務連接配接(Service Connections)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-cmbw5ya4NjNttWNypHbvw1M1cTO3YzMtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
添加好了之後如下所示:
-
建立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
接下來,大家就可以根據情況盡情使用了。在國内,我們推薦使用騰訊雲公共鏡像。