首页 > 解决方案 > 如何使用 Docker-Compose 将多个 Web Api 容器部署到 Azure

问题描述

我对码头工人很陌生。我正在尝试部署一个多容器 web api 项目。我遵循像 https://medium.com/@kkajasu/deployment-in-azure-for-one-container-dbe4e8e031c1这样的方式。这样如何管理多容器。请给我一些想法。谢谢

标签: azuredockerdocker-compose

解决方案


创建 Web 应用程序时,您需要选择 Docker Image,然后选择 Docker Compose,然后选择存储图像的注册表。然后,您需要提供一个 YAML 文件,您将在其中定义容器映像以及网络名称和端口。这是一个例子:

version: '3.4'

services:
  webapiconverter:
    image: myacr.azurecr.io/converter
    ports:
      - '80'
    restart: always

  webapiinventory:
    image: myacr.azurecr.io/inventory
    ports:
      - '80'
    restart: always  

  apigateway:
    image: myacr.azurecr.io/apigateway
    ports:
      - '80:80'
    restart: always

请注意,Web App 只能公开端口 80 和 8080,因此如果您在多个容器中有多个 API,您的入口点很可能是 Ocelot 之类的 API 网关。您需要在 JSON 文件中定义路由。这是一个例子:

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/f_to_c?f={degrees}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "converter",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api/converter/{degrees}"
    },        
    {
      "DownstreamPathTemplate": "/api/inventory/{sku}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "webapi",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api/inventory/{sku}"
    }

  ],
  "GlobalConfiguration": {
    "BaseUrl": "https://backend.azurewebsites.net"
  }
}

这是参考:https ://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot


推荐阅读