Azure Container Apps
在 Azure Container Apps 上部署 Remotion 渲染服務的完整逐步指南,含 GPU 加速、自動縮放與 Azure CLI 部署範例。
Azure Container Apps
注意:本指南由社群貢獻,尚未經過 Remotion 團隊完整測試。
本指南說明如何在 Azure Container Apps 上部署 Remotion 渲染服務,包含 GPU 加速配置、自動縮放設定與基本渲染佇列。
前置需求
在開始前,請確認以下項目已準備就緒:
- 已具備 Docker 支援的 Remotion 專案(可用
npm create video建立) - Azure 帳號及有效訂閱
- 已安裝 Azure CLI 並完成驗證(
az login) - 已安裝 Docker 並完成驗證(
docker login) - Docker Hub 帳號用於託管容器映像
- (選用)已申請在 Azure Container Apps 上使用 GPU 的權限,在此申請
步驟一:選擇或準備專案
本指南以 remotion-azure 作為示範專案,此專案已配置 GPU 加速,基於 Remotion 渲染伺服器模板。
git clone https://github.com/alexfernandez803/remotion-azure
cd remotion-azure
npm install若使用自己的專案,請確認 Dockerfile 已正確設定。
步驟二:建置並標記 Docker 映像
在專案根目錄執行以下指令,建置映像並指定標籤:
docker build -t your-dockerhub-username/remotion-docker-gpu:1.0.0 .若需要支援多平台(例如在 Apple Silicon Mac 上建置供 Azure 的 amd64 映像):
docker buildx build \
--platform linux/amd64 \
-t your-dockerhub-username/remotion-docker-gpu:1.0.0 \
--push \
.步驟三:推送映像至 Docker Hub
docker push your-dockerhub-username/remotion-docker-gpu:1.0.0步驟四:設定環境變數
為後續 Azure CLI 指令設定環境變數,方便重複使用:
CONTAINER_IMAGE="docker.io/your-dockerhub-username/remotion-docker-gpu:1.0.0"
RESOURCE_GROUP="remotion-rg"
ENVIRONMENT_NAME="remotion-env"
LOCATION="swedencentral"
CONTAINER_APP_NAME="remotion-renderer"
WORKLOAD_PROFILE_NAME="NC8as-T4"
WORKLOAD_PROFILE_TYPE="Consumption-GPU-NC8as-T4"變數說明:
| 變數 | 說明 |
|---|---|
CONTAINER_IMAGE | Docker Hub 上的完整映像路徑 |
RESOURCE_GROUP | Azure 資源群組名稱(可自訂) |
ENVIRONMENT_NAME | Container Apps 環境名稱(可自訂) |
LOCATION | Azure 區域,GPU 支援區域有限,swedencentral 為可用選項之一 |
WORKLOAD_PROFILE_NAME | GPU 工作負載設定檔名稱,依 Azure 文件設定 |
WORKLOAD_PROFILE_TYPE | GPU 類型,NC8as-T4 代表 NVIDIA T4 GPU |
步驟五:建立資源群組
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
--query "properties.provisioningState"成功時輸出:"Succeeded"
步驟六:為監控功能註冊 Insights
az provider register \
--namespace Microsoft.OperationalInsights \
--wait步驟七:建立 Container Apps 環境
az containerapp env create \
--name $ENVIRONMENT_NAME \
--resource-group $RESOURCE_GROUP \
--location "$LOCATION" \
--query "properties.provisioningState"此步驟需要數分鐘。成功時輸出:"Succeeded"
步驟八:為環境新增 GPU 工作負載設定檔
az containerapp env workload-profile add \
--name $ENVIRONMENT_NAME \
--resource-group $RESOURCE_GROUP \
--workload-profile-name $WORKLOAD_PROFILE_NAME \
--workload-profile-type $WORKLOAD_PROFILE_TYPE步驟九:部署容器應用程式
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT_NAME \
--image $CONTAINER_IMAGE \
--target-port 3000 \
--ingress external \
--cpu 8.0 \
--memory 56.0Gi \
--workload-profile-name $WORKLOAD_PROFILE_NAME \
--query properties.configuration.ingress.fqdn部署完成後,Azure CLI 會輸出應用程式的公開 URL:
"remotion-renderer.grayocean-24741fc9.swedencentral.azurecontainerapps.io"注意:
--target-port 3000對應 Node.js 伺服器的監聽埠。--cpu 8.0和--memory 56.0Gi為 NC8as-T4 GPU 工作負載設定檔的對應規格。
步驟十:設定自動縮放(選用)
Azure Container Apps 支援基於 HTTP 請求數量的自動縮放:
az containerapp update \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--scale-rule-name http-scaling \
--scale-rule-type http \
--scale-rule-metadata concurrentRequests=5 \
--min-replicas 0 \
--max-replicas 10此設定讓系統在閒置時縮減至零(節省費用),並在需求增加時自動擴充至最多 10 個執行個體。
步驟十一:觸發渲染
向部署服務的 /renders 端點發送 POST 請求。將 YOUR_SERVICE_URL 替換為步驟九的輸出 URL:
curl -X POST https://YOUR_SERVICE_URL/renders \
-H "Content-Type: application/json" \
-d '{
"compositionId": "MyVideo",
"inputProps": {
"titleText": "Hello from Azure"
}
}'成功回應包含 jobId:
{
"jobId": "955338f6-2607-48bd-bedb-6d4c98f7b4dc"
}步驟十二:查詢渲染狀態
curl https://YOUR_SERVICE_URL/renders/955338f6-2607-48bd-bedb-6d4c98f7b4dc{
"status": "completed",
"videoUrl": "/renders/955338f6-2607-48bd-bedb-6d4c98f7b4dc.mp4",
"data": { "titleText": "Hello from Azure" }
}將 YOUR_SERVICE_URL 與 videoUrl 組合即可得到完整的下載連結。
步驟十三:(選用)清理資源
若不再需要此服務,刪除整個資源群組以停止計費:
az group delete --name $RESOURCE_GROUP --yes --no-wait警告:此指令會刪除資源群組內的所有資源,包括容器應用程式、監控資料等,且無法復原。
費用與效能注意事項
費用警告:GPU 執行個體(如 NC8as-T4)費用顯著高於一般 CPU 執行個體。本指南不包含費用管理功能。請參閱 Azure Container Apps 定價估算使用費用,並設定 Azure 預算警示以控制支出。
效能說明:GPU 加速已在示範專案的
remotion.config.ts中啟用,但尚未完整驗證實際 GPU 使用情況。部分渲染場景可能仍以 CPU 模式執行。
相關資源
- Azure Container Apps 文件 — 官方 Azure 文件
- Azure Container Apps GPU 支援 — GPU 工作負載配置指南
- 示範專案原始碼 — 完整實作參考
- Remotion 渲染伺服器模板 — 基礎模板
- Cloudflare Containers — 另一個容器渲染平台
- Docker 部署指南 — 一般 Docker 設定說明
- 伺服器端渲染 — 伺服器端渲染概覽