部署到 Azure App Service
Azure 托管 PaaS 用于 Web 应用,从 Git、容器或 ZIP 部署,含自动扩缩。
平台高级
为什么
App Service 是 Azure 托管 Web 托管,内置 TLS、自动扩缩、部署槽和 AAD 认证。支持 .NET、Node、Python、Java 和容器一键部署。
何时使用
企业 Azure 工作负载、.NET 应用和已在 Azure 的团队用 App Service。容器化微服务优先 Container Apps。
如何做
1. 创建 — az webapp up --runtime NODE:20-lts
2. Git 部署 — 配置部署源为 GitHub 仓库
3. 容器 — az webapp config container set --docker-custom-image
4. 槽 — 部署槽用于 staging,部署时自动交换
5. 自动扩缩 — CPU/内存扩缩规则
6. 连接字符串 — 链接 Azure SQL、Cosmos DB
7. 日志 — az webapp log tail 流式
示例
# 部署 Node.js 应用
az webapp up --name myapp --runtime "NODE:20-lts" --location eastus
# 部署容器
az webapp create --name myapp --plan myplan --deployment-container-image-name mycr.azurecr.io/app:v1
# staging 部署槽
az webapp deployment slot create --name myapp --slot staging
az webapp deployment slot auto-swap --name myapp --slot staging
# 扩缩规则
az monitor autoscale create --resource myapp --count 2 --min-count 1 --max-count 10
常见问题
- ⚠应用启动但 503 — 运行时版本错误或启动命令不匹配
- ⚠槽交换失败 — 应用设置粘槽,检查 slotSetting: true
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓零停机用部署槽 — 部署 staging,测试,自动交换生产
- ✓设 WEBSITES_PORT 匹配应用端口 — 避免错误端口检测 503
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求