檢查 Azure ACR 上的 Image 是否和 local docker 一致

要確認 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)而不去抓新的。

建議做法:

  1. 強迫拉取:在 Web App 的 Deployment Center 點擊 Refresh 或執行 az webapp restart
  2. 使用動態 Tag (推薦):在開發階段,建議使用版本號或時間戳記,例如 v1.1v1.2v1_20260310。這樣可以確保每次部署絕對是新的,也方便在出錯時快速「回滾 (Rollback)」。

總結檢查流程

  1. docker push 成功。
  2. 執行 az acr repository show 確認 LastUpdateTime 已更新。
  3. 執行 az webapp restart 確保 App Service 重新去拉取該 Digest。

你想知道如何設定 Webhook,讓你在 docker push 之後 Azure 會自動重啟並更新網頁嗎?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *