要確認 Azure 上的 Image 是否為最新版本,最科學的方法不是看標籤(Tag),而是比對 Digest(數位指紋)。
即使 Tag 都是 v1,每一次 docker push 產生的 Digest 都會不同。
1. 檢查本地端 Image 的 Digest
在你的開發電腦(localhost)執行以下指令,找到你剛剛 Push 出去的那份 Image 的摘要:
PowerShell
# 顯示本地 Image 的詳細資訊
docker inspect --format='{{index .RepoDigests 0}}' "${ACR_SERVER}/policy-app:v1"
這會輸出一串類似 sha256:abcd123... 的字串。
2. 檢查 Azure ACR 上的 Image 資訊
使用 PowerShell 查詢 ACR 中該 Tag 的更新時間與 Digest:
PowerShell
# 查詢 ACR 中 v1 標籤的最後更新時間與 Digest
az acr repository show --name your-app-arc1 --image "policy-app:v1" --output table
輸出結果範例:
| CreatedTime | Digest | ImageName | LastUpdateTime |
| :— | :— | :— | :— |
| 2026-03-10T01:20:00Z | sha256:abcd… | policy-app:v1 | 2026-03-10T08:30:00Z |
- LastUpdateTime: 確認這個時間是否符合你剛剛 Push 的時間。
- Digest: 確認是否與你本地端看到的
sha256字串一致。
3. 確認 App Service 正在運行的版本
即使 ACR 已經更新了,App Service 不一定會自動抓取最新版(除非你重啟或開啟了 Continuous Deployment)。你可以檢查 App Service 目前載入的 Image 雜湊值:
PowerShell
# 取得目前 App Service 正在運行的容器 Image 詳情
az webapp config container show --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP --query "[].data.DOCKER_CUSTOM_IMAGE_NAME"
4. 關鍵提醒:Tag 覆蓋問題
如果你重複推送到同一個 Tag (v1),Azure App Service 有時會因為快取(Cache)而不去抓新的。
建議做法:
- 強迫拉取:在 Web App 的 Deployment Center 點擊 Refresh 或執行
az webapp restart。 - 使用動態 Tag (推薦):在開發階段,建議使用版本號或時間戳記,例如
v1.1、v1.2或v1_20260310。這樣可以確保每次部署絕對是新的,也方便在出錯時快速「回滾 (Rollback)」。
總結檢查流程
docker push成功。- 執行
az acr repository show確認 LastUpdateTime 已更新。 - 執行
az webapp restart確保 App Service 重新去拉取該 Digest。
你想知道如何設定 Webhook,讓你在 docker push 之後 Azure 會自動重啟並更新網頁嗎?