You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Github Action将多容器应用部署到Azure App Service?

多容器应用自动部署到Azure App Service实现方案

前置准备

  1. 先在本地生成Azure服务主体,用于GitHub Actions访问Azure资源,执行以下Azure CLI命令:
az ad sp create-for-rbac --name "github-actions-deploy-sp" --role contributor --scopes /subscriptions/替换为你的订阅ID/resourceGroups/替换为你的资源组名称 --sdk-auth

命令执行后会输出一段JSON格式的凭证,复制备用。
2. 打开GitHub对应仓库的「Settings」→「Secrets and variables」→「Actions」,添加以下密钥:

  • AZURE_CREDENTIALS:上一步生成的JSON凭证内容
  • AZURE_APP_SERVICE_NAME:你的Azure App Service实例名称
  • AZURE_RESOURCE_GROUP:App Service所在的资源组名称
  1. 提前为App Service配置Azure容器注册表(ACR)的拉取权限,确保App Service可以正常拉取ACR中的私有镜像。

编写GitHub Actions工作流

在仓库中创建.github/workflows/deploy-master.yml文件,内容如下:

name: 自动部署多容器应用到Azure App Service
# 触发条件:PR合并到master分支时触发
on:
  pull_request:
    branches: [ master ]
    types: [ closed ]

jobs:
  deploy:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      # 检出仓库代码,获取docker-compose.yml文件
      - name: 检出代码
        uses: actions/checkout@v4

      # 登录Azure
      - name: 登录Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      # 可选步骤:如果你每次构建会生成新的镜像标签,可在此处替换docker-compose.yml中的镜像标签
      # 例如你构建的django镜像新标签为${{ steps.build.outputs.new_tag }},执行以下命令替换
      # - name: 更新镜像标签
      #   run: sed -i "s/mycr.azurecr.io\/django:dev-latest/mycr.azurecr.io\/django:${{ steps.build.outputs.new_tag }}/g" docker-compose.yml

      # 部署多容器配置到App Service
      - name: 部署多容器应用
        run: |
          az webapp config container set \
            --resource-group ${{ secrets.AZURE_RESOURCE_GROUP }} \
            --name ${{ secrets.AZURE_APP_SERVICE_NAME }} \
            --multicontainer-config-type compose \
            --multicontainer-config-file docker-compose.yml

      # 可选步骤:执行健康检查验证部署结果
      - name: 验证部署状态
        run: |
          az webapp show \
            --resource-group ${{ secrets.AZURE_RESOURCE_GROUP }} \
            --name ${{ secrets.AZURE_APP_SERVICE_NAME }} \
            --query state

注意事项

  • 你当前使用的docker-compose 3.x版本符合Azure App Service的多容器配置要求,且所有服务都使用image指令而非build指令,无需额外调整即可直接部署。
  • 如果你需要持久化存储卷的数据,需要提前在App Service的「配置」→「路径映射」中添加持久化存储挂载,否则compose中定义的volumes为容器临时存储,实例重启后数据会丢失。
  • 如果部署后服务启动失败,可在Azure门户中查看App Service的容器日志排查问题。

内容的提问来源于stack exchange,提问作者Yury Kirienko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:24:07