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

Azure与Docker Compose:资源组指定异常问题求助

Azure容器实例Docker Compose部署:资源组找不到错误排查

问题详情

我正在部署多容器应用到Azure容器实例,已创建名为myResourceGroup的资源组,执行az group list确认其存在:

C:\dev\shape-shop-back-end>az group list
[
  {
    "id": "/subscriptions/8cdb50cb-ede8-4eac-80df-55afadf861cd/resourceGroups/cloud-shell-storage-westeurope",
    "location": "westeurope",
    "managedBy": null,
    "name": "cloud-shell-storage-westeurope",
    "properties": {
      "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
  },
  {
    "id": "/subscriptions/8cdb50cb-ede8-4eac-80df-55afadf861cd/resourceGroups/shapeShopResourceGroup",
    "location": "eastus",
    "managedBy": null,
    "name": "shapeShopResourceGroup",
    "properties": {
      "provisioningState": "Succeeded"
    },
    "tags": null,
    "name": "myResourceGroup",
    "properties": {
      "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
  }
]

但运行docker compose up时触发错误:

C:\dev\shape-shop-back-end>docker compose up
[+] Running 0/1
 - Group shape-shop-back-end  Error                                                                                                                                0.6s 
containerinstance.ContainerGroupsClient#CreateOrUpdate: Failure sending request: StatusCode=404 -- Original Error: Code="ResourceGroupNotFound" Message="Resource group '720e631e-ce87-88e3-0cec-ca01ad4f3411' could not be found."

我的docker-compose.yml未指定资源组:

version: '3.7'
services:
  app-server:
    image: ollyw123/shapeshop
    ports:
      - "8080:8080" 
    depends_on:
      - db 
    environment: 
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/shapeshop?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: root
      SERVER_PORT: 8080 # must match with ports
    networks:
      - backend
  
  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_DATABASE: shapeshop
      MYSQL_USER: admin
      MYSQL_PASSWORD: admin
      MYSQL_ROOT_PASSWORD: root
    networks:
      - backend

volumes:
  db-data2:

networks:
  backend:

我有几个疑问:

  • 资源组列表里根本没有720e631e-ce87-88e3-0cec-ca01ad4f3411这个ID对应的资源组
  • Docker Compose是如何确定要部署到哪个资源组的?
  • 是否存在默认资源组?有多个资源组时,怎么确认Docker Compose当前指向的是哪个?

原因分析与解决方案

1. Docker Compose for Azure的资源组匹配逻辑

当用Docker Compose部署到Azure容器实例时,如果docker-compose.yml里没指定资源组,Docker会按以下优先级确定目标资源组:

  • 优先读取Azure CLI的默认资源组配置
  • 如果未设置默认资源组,会尝试根据当前工作目录生成资源组名;你看到的随机ID大概率是之前部署失败后,本地Docker上下文残留的无效关联信息

2. 快速解决步骤

步骤1:检查并设置Azure CLI默认资源组

先查看当前默认资源组:

az configure get group

如果输出为空或不是myResourceGroup,执行命令设置默认:

az configure --defaults group=myResourceGroup

步骤2:重置Docker Azure上下文(可选,若步骤1无效)

如果设置默认资源组后仍报错,重置Docker的Azure上下文:

docker context rm azure
docker context create azure myazurecontext
docker context use myazurecontext

创建上下文时会引导你登录Azure并选择订阅,确保选到包含myResourceGroup的订阅。

步骤3:在docker-compose.yml中显式指定资源组(推荐)

为避免后续混淆,直接在配置文件顶部添加Azure专属配置块,明确指定资源组和位置:

version: '3.7'
x-azure:
  resource_group: myResourceGroup
  location: eastus # 需与你的资源组位置一致
services:
  # 原服务内容保持不变

3. 验证部署

完成上述设置后,重新执行:

docker compose up

此时Docker会明确使用你指定的myResourceGroup进行部署。

内容的提问来源于stack exchange,提问作者Oliver Watkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:24