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

部署Docker Compose至Azure容器实例失败:镜像拉取权限被拒

解决Azure Web App部署Docker Compose镜像拉取权限问题

核心问题分析

  1. 镜像地址错误:你的Docker Compose中FastAPI服务使用的是Docker Hub地址webmedinsight/rmed1:build-tag-1,但你计划使用Azure容器注册表(ACR)存储镜像,导致Azure尝试从Docker Hub拉取不存在的私有仓库(或无权限)。
  2. 容器凭证配置冲突:Web App可能配置了错误的Docker Hub凭证,导致拉取公共镜像(chromadb、mongo)时也触发认证错误,虽然最终公共镜像拉取成功,但FastAPI镜像拉取彻底失败。
  3. 不必要的启动命令:docker-compose up --build在Azure Web App多容器部署中无需手动指定,平台会自动处理镜像拉取和容器启动。

具体解决步骤

1. 修正Docker Compose中的镜像地址

将FastAPI服务的image字段替换为你的ACR完整地址,格式为<ACR名称>.azurecr.io/<镜像名>:<标签>。根据你提供的ACR截图,修正后的docker-compose.yml如下:

version: '3'
services:
  chromadb:
    image: chromadb/chroma:latest
    container_name: chromadb
    ports:
      - "8001:8000"
    volumes:
      - chroma_data:/chroma/.chroma

  mongo:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "27017:27017"
    volumes:
      - mongo_data:/data/db

  fastapi:
    # 替换为你的ACR镜像地址
    image: webmedinsight.azurecr.io/rmed1:build-tag-1
    container_name: fastapi_app
    ports:
      - "8000:8000"
    depends_on:
      - chromadb
      - mongo
    environment:
      MONGO_HOST: mongo

volumes:
  chroma_data:
  mongo_data:

2. 配置Web App关联ACR凭证

  • 进入Azure Web App的「配置」>「容器设置」
  • 选择「多容器」,上传修正后的docker-compose.yml文件
  • 在「注册表设置」区域:
    • 注册表类型选择「Azure容器注册表」
    • 选择你的ACR实例,平台会自动填充用户名和密码(若未自动填充,可从ACR的「访问密钥」页面获取管理员用户名和密码)
    • 若之前配置过Docker Hub的凭证,务必删除,避免干扰公共镜像拉取

3. 移除不必要的启动命令

删除Web App配置中的启动命令docker-compose up --build,Azure会自动处理多容器的启动流程。

4. 确认ACR中存在目标镜像

确保rmed1:build-tag-1已成功推送到ACR,可通过以下命令验证:

# 登录ACR
az acr login --name webmedinsight
# 推送镜像(若未推送)
docker tag webmedinsight/rmed1:build-tag-1 webmedinsight.azurecr.io/rmed1:build-tag-1
docker push webmedinsight.azurecr.io/rmed1:build-tag-1

验证部署

完成上述步骤后,重启Web App,查看日志是否正常拉取所有镜像并启动容器。

内容的提问来源于stack exchange,提问作者ניר שרון

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:15:55