Warm tip: This article is reproduced from serverfault.com, please click

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

(其他 - Can`t deploy docker-compose infrastructure to Azure Container Instances)

发布于 2020-11-28 10:45:54

我正在尝试将微服务应用程序部署到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/zh-cn/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"

我已经检查了所选“东部”地区ACI的可用性-目前可用。 https://status.azure.com/zh-CN/status?WT.mc_id=A52BDE99C

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

你能否给我一个关于什么可能导致此错误的提示,我应该如何解决呢?

Questioner
GoodboY
Viewed
34
Charles Xu 2020-11-30 10:20:13

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

当然,你可以使用最大分配来限制CPU。但是我认为这还不足以为你提供所有服务。而且ACI以其轻巧而著称。如果需要将多个端口暴露在外部,我建议你使用AKS部署服务,这是更合适的。