无法将 docker-compose 基础结构部署到 Azure 容器实例

Can`t deploy docker-compose infrastructure to Azure Container Instances

我正在尝试将我的微服务应用程序部署到 Azure 容器实例。每个服务都表示为 Docker 图像,存储在 DockerHub 中。 docker-compose.yml 文件中描述了整个应用程序的基础结构:

version: '3.7'
services:
    db:
        image: darkmode1012/ticketflow_db:1.0.0
        environment:
            - POSTGRES_USER=postgres
            - POSTGRES_DB=postgres
            - POSTGRES_HOST_AUTH_METHOD=trust
        networks:
            - ticketflow-network
        restart: unless-stopped
        ports:
            - 5432:5432

    consul:
        image: "consul:1.8.5"
        networks:
            - ticketflow-network
        ports:
            - "8500:8500"

    identity-service:
        image: darkmode1012/ticketflow_identity-service:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - db
            - consul
        environment:
            - ASPNETCORE_ENVIRONMENT=Docker
            - ASPNETCORE_URLS=http://identity-service:9001
        restart: unless-stopped

    profile-service:
        image: darkmode1012/ticketflow_profile-service:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - db
            - consul
        environment:
            - ASPNETCORE_ENVIRONMENT=Docker
            - ASPNETCORE_URLS=http://profile-service:9002
        restart: unless-stopped

    ticket-service:
        image: darkmode1012/ticketflow_ticket-service:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - db
            - consul
        environment:
            - ASPNETCORE_ENVIRONMENT=Docker
            - ASPNETCORE_URLS=http://ticket-service:9003
        restart: unless-stopped

    movie-service:
        image: darkmode1012/ticketflow_movie-service:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - db
            - consul
        environment:
            - ASPNETCORE_ENVIRONMENT=Docker     
            - ASPNETCORE_URLS=http://movie-service:9004
        restart: unless-stopped            

    api-gateway:
        image: darkmode1012/ticketflow_api-gateway:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - consul
            - identity-service
            - profile-service
            - ticket-service
            - movie-service
        environment:
            - ASPNETCORE_ENVIRONMENT=Docker   
            - ASPNETCORE_URLS=http://host.docker.internal:8080
        restart: unless-stopped        
        ports:
            - "8080:8080"
                    
    web-client:
        image: darkmode1012/ticketflow_web-client:1.0.0
        networks:
            - ticketflow-network
        depends_on:
            - api-gateway
        ports:
            - 3000:3000
        stdin_open: true

networks: 
  ticketflow-network:
    driver: bridge

当我在本地 运行 docker-compose up - 它工作正常。但是当我尝试将它部署到 Azure 容器实例时(遵循指南 https://docs.microsoft.com/en-us/azure/container-instances/tutorial-docker-compose),我看到错误:

D:\Developing\Ticket_Flow>docker compose up
[+] Running 0/1
 - Group ticket_flow  Waiting                                             92.4s
containerinstance.ContainerGroupsClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=<nil> Code="ServiceUnavailable" Message="The requested resource is not available in the location 'eastus' at this moment. Please retry with a different resource request or in another location. Resource requested: '9' CPU '8.1' GB memory 'Linux' OS"

我已经检查了所选“eastus”区域的 ACI 可用性 - 目前可用。 https://status.azure.com/en-us/status?WT.mc_id=A52BDE99C

此外,我已尝试将资源组与另一个区域一起使用 - 错误仍然存​​在。

能否请您告诉我是什么原因导致此错误以及我应该如何解决它?

据我所知,问题是您在 CPU 上为 Azure 容器实例所需的资源超出了美国东部的限制。请参阅限制 here。美国东部的最大值 CPU 是 4。但你需要 9。

当然可以用maximum allocation来限制CPU。但我认为这对你们所有的服务来说还不够。 ACI 以其轻量级着称。如果你需要对外暴露多个端口,我推荐你使用AKS来部署你的服务,比较合适。

我遇到了同样的问题。令人惊讶的是集成是多么善变....它要么失败而没有错误,要么给出一个毫无意义的错误。

对于您的特定问题,可以通过以下方式解决:

指定所需的资源和突发最大值 - 对于每个容器,如下所示: 图片:nginx 部署: 资源: 限制: 中央处理器:'0.50' 内存:'1G' 预订: 中央处理器:'0.25' 内存:'1G'

确保整个组合文件的总内存和 CPU(预留)在容器云目标的限制内。