簡體   English   中英

無法將 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

此外,我嘗試將資源組與另一個區域一起使用 - 錯誤仍然存在。

您能否告訴我可能導致此錯誤的原因以及我應該如何解決它?

據我所知,問題是您為 Azure 容器實例所需的 CPU 資源超出了美國東部的限制。 請參閱此處的限制。 美國東部的最大 CPU 為 4。但您需要 9。

當然,您可以使用最大分配來限制 CPU。 但我認為這對你們所有的服務來說還不夠。 ACI 以其輕量級而聞名。 如果你需要對外暴露多個端口,我推薦你使用AKS來部署你的服務,它更合適。

我遇到了同樣的問題。 令人驚訝的是集成是多么善變……它要么會失敗而沒有錯誤,要么會給出一個沒有意義的錯誤。

對於您的特定問題,以下將解決它:

Specify needed resources and burst maximum - for each container like so: image: nginx deploy: resources: limits: cpus: '0.50' memory: '1G' reservations: cpus: '0.25' memory: '1G'

確保整個 compose 文件的總 memory 和 CPU(預留)在容器雲目的地的限制范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM