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

如何从Bitbucket自动部署镜像至Azure Container App?

实现Bitbucket到Azure Container App的自动部署

核心方案:通过Bitbucket Pipeline结合Azure CLI完成部署

由于Azure Container App内置的持续部署暂不支持Bitbucket,直接在Bitbucket流水线中添加Azure CLI部署步骤是最可行的方案,以下是具体操作步骤:


1. 准备Azure服务主体凭证

  • 在Azure门户或通过Azure CLI创建一个服务主体,并为其分配目标Container App所在资源组的Contributor权限。
  • 记录该服务主体的三个关键信息:租户ID(Tenant ID)、客户端ID(Client ID)、客户端密钥(Client Secret)。

2. 配置Bitbucket仓库环境变量

进入Bitbucket仓库的Repository settings > Repository variables,添加以下环境变量(所有值均从步骤1获取或自定义):

  • AZURE_TENANT_ID
  • AZURE_CLIENT_ID
  • AZURE_CLIENT_SECRET
  • AZURE_RESOURCE_GROUP:目标资源组名称
  • AZURE_CONTAINER_APP_NAME:目标Container App名称
  • DOCKER_HUB_USERNAME、DOCKER_HUB_PASSWORD:Docker Hub账号凭证(如果需要在流水线中构建镜像)

3. 编写Bitbucket流水线配置文件

在仓库根目录创建bitbucket-pipelines.yml,包含构建推送镜像(可选)和部署到Azure的步骤:

完整示例(含镜像构建推送)

pipelines:
  default:
    # 步骤1:构建并推送Docker镜像到Docker Hub
    - step:
        name: Build & Push Docker Image
        image: docker:latest
        services:
          - docker
        script:
          # 用提交哈希作为镜像标签,避免latest缓存问题
          - IMAGE_TAG=${BITBUCKET_COMMIT}
          - docker build -t your-dockerhub-username/your-image:$IMAGE_TAG .
          - echo $DOCKER_HUB_PASSWORD | docker login -u $DOCKER_HUB_USERNAME --password-stdin
          - docker push your-dockerhub-username/your-image:$IMAGE_TAG

    # 步骤2:部署更新Azure Container App
    - step:
        name: Deploy to Azure Container App
        image: mcr.microsoft.com/azure-cli:latest
        script:
          # 登录Azure
          - az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID
          # 更新Container App的镜像版本
          - IMAGE_TAG=${BITBUCKET_COMMIT}
          - az containerapp update --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_APP_NAME --image your-dockerhub-username/your-image:$IMAGE_TAG

仅部署步骤(如果镜像已提前推送)

image: mcr.microsoft.com/azure-cli:latest

pipelines:
  default:
    - step:
        name: Deploy to Azure Container App
        script:
          - az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID
          - az containerapp update --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_APP_NAME --image your-dockerhub-username/your-image:${BITBUCKET_COMMIT}

关键注意事项

  • 避免使用latest标签:用Bitbucket内置的BITBUCKET_COMMIT环境变量作为镜像标签,确保每次部署的镜像与代码提交一一对应,防止缓存导致的部署不一致。
  • 权限控制:服务主体仅需分配目标资源组的Contributor权限,遵循最小权限原则。
  • 部署验证:可在部署步骤后添加验证逻辑,例如用az containerapp show --resource-group $AZURE_RESOURCE_GROUP --name $AZURE_CONTAINER_APP_NAME --query properties.provisioningState检查部署状态,或调用应用的健康检查接口确认服务正常。

内容的提问来源于stack exchange,提问作者R. Gulbrandsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:10:19