首页 > 解决方案 > 使用 Docker compose 在 Azure 上部署多容器实例时遇到问题

问题描述

docker compose-up本地能够构建和启动服务,但是在执行相同操作时Azure Container Instances出现以下错误

containerinstance.ContainerGroupsClient#CreateOrUpdate:发送请求失败:StatusCode=400 -- 原始错误:Code="InaccessibleImage" Message="无法访问容器组 'djangodeploy' 中的图像 'docker/aci-hostnames-sidecar:1.0'。请检查映像和注册表凭据。”

另外,这张图的目的是什么docker/aci-hostnames-sidecar

ACI 部署工作正常,但现在突然不再工作了

内容docker-compose.yml如下


version: '3.7'

services:
  django-gunicorn:
    image: oasisdatacr.azurecr.io/oasis_django:latest
    env_file:
      - .env
    build:
      context: .
    command: > 
      sh -c "
      python3 manage.py makemigrations &&
      python3 manage.py migrate &&
      python3 manage.py wait_for_db &&
      python3 manage.py runserver 0:8000"
    ports:
      - "8000:8000"
  celery-worker:
    image: oasisdatacr.azurecr.io/oasis_django_celery_worker:latest
    restart: always
    build:
      context: .
    command: celery -A oasis worker -l INFO
    env_file:
      - .env
    depends_on:
      - django-gunicorn
  celery-beat:
    image: oasisdatacr.azurecr.io/oasis_django_celery_beat:latest
    build: 
      context: .
    command: celery -A oasis beat -l INFO
    env_file:
      - .env
    depends_on:
      - django-gunicorn
      - celery-worker

更新Azure 端可能存在一些问题,因为我能够像往常一样部署容器而无需任何更改

标签: azuredockerdocker-composeazure-container-instancesazure-container-registry

解决方案


使用 docker-compose 部署多个容器到 ACI 时,首先需要在本地构建镜像,然后需要通过命令将镜像推送到 ACR docker-compose push,当然需要先登录 ACR . 请参阅此处的示例。

如果您已经将图像推送到您的 ACR,那么您需要确保您是否使用正确的凭据登录到您的 ACR,并且带有标签的图像名称是绝对正确的。


推荐阅读