這是一份完整的 Azure CLI 一鍵部署腳本。我們將使用 Azure Container Registry (ACR) 作為存放中繼站,再讓 App Service 從中拉取 Image 執行。
請將以下內容存成 deploy.ps1,並將開頭的變數替換成你的 Azure 資訊。
1. 準備自動化部署腳本 (deploy.ps1)
PowerShell
# --- 設定區 ---
$RESOURCE_GROUP = "你的資源群組名稱"
$ACR_NAME = "你的ACR名稱" # 必須是唯一名稱
$APP_SERVICE_PLAN = "你的AppServicePlan名稱"
$WEB_APP_NAME = "你的網頁應用程式名稱"
$LOCATION = "eastasia" # 例如 eastasia (東亞)
# 1. 登入 Azure 並設定訂閱
az login
# 2. 建立資源群組 (如果尚未建立)
az group create --name $RESOURCE_GROUP --location $LOCATION
# 3. 建立並登入 ACR
az acr create --resource-group $RESOURCE_GROUP --name $ACR_NAME --sku Basic
az acr login --name $ACR_NAME
# 4. 在本機打包並推送到 ACR
$IMAGE_TAG = "$ACR_NAME.azurecr.io/policy-app:latest"
docker build -t $IMAGE_TAG .
docker push $IMAGE_TAG
# 5. 建立 App Service Plan (如果尚未建立,需選擇 Linux)
az appservice plan create --name $APP_SERVICE_PLAN --resource-group $RESOURCE_GROUP --is-linux --sku B1
# 6. 建立 App Service 並指定容器映像檔
az webapp create --resource-group $RESOURCE_GROUP --plan $APP_SERVICE_PLAN --name $WEB_APP_NAME --container-image-name $IMAGE_TAG
# 7. 開啟受控識別 (Managed Identity)
az webapp identity assign --resource-group $RESOURCE_GROUP --name $WEB_APP_NAME
# 8. 設定環境變數 (SQL 連線資訊)
az webapp config appsettings set --resource-group $RESOURCE_GROUP --name $WEB_APP_NAME --settings `
DB_SERVER="你的伺服器.database.windows.net" `
DB_NAME="你的資料庫名稱" `
PORT="8080"
2. 關鍵權限設定 (最後一步)
雖然腳本幫你開啟了「受控識別」,但你還需要讓 App Service 有權限去 ACR 拿檔案。
請在 Portal 或透過 CLI 執行:
PowerShell
# 允許 App Service 從 ACR 拉取映像檔
az webapp config container set --name $WEB_APP_NAME --resource-group $RESOURCE_GROUP --docker-custom-image-name $IMAGE_TAG --docker-registry-server-url "https://$ACR_NAME.azurecr.io"
3. 如何在 Azure 上驗證
- 檢查部署中心:在 Azure Portal 進入你的 App Service,查看「部署中心 (Deployment Center)」,確認記錄顯示 Success。
- 查看紀錄:進入「記錄串流 (Log Stream)」,你應該能看到
Node Server running at http://localhost:8080的訊息。 - 瀏覽網頁:直接點擊 App Service 的預設 URL(例如
https://your-app.azurewebsites.net)。
4. 常見問題排除
- 容器啟動失敗:通常是因為 Port 設定不對。Azure 預設會偵測容器開放的埠號,但如果你的 Node 跑在 8080,請確保環境變數中有
PORT=8080,或是在 Portal 的「組態」中手動新增WEBSITES_PORT=8080。 - SQL 連線失敗:請確認你的 SQL Server 防火牆已勾選「允許 Azure 服務存取此伺服器」,並且你在資料庫中已經為 App Service 的身分執行了
CREATE USER指令。
恭喜你!從 AI Studio 的靜態檔案,一路到 Docker 化、Node.js 後端串接,最後成功部署到雲端。這是一套非常完整的現代化開發流程。