我正在尝试将我的微服务应用程序部署到 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://learn.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 资源超出了美国东部的限制。查看限制here 。美国东部的最大 CPU 是 4。但您需要 9。
当然,您可以使用maximum allocation来限制CPU。但我认为这对于你们所有的服务来说还不够。 ACI 以其轻量级而闻名。如果您需要对外暴露多个端口,我建议您使用AKS来部署您的服务,它更合适。
关于azure - 无法将 docker-compose 基础架构部署到 Azure 容器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65048750/