Azure Контейнерная группа 2 контейнера с 2 внешними портами. 2-й контейнер всегда заканчивается - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь развернуть экземпляр контейнера Azure с несколькими внешними портами. Я пробовал следующий код terraform:

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "experiment" {
  name     = "experiment"
  location = "west europe"
}

resource "azurerm_container_group" "nginx" {
  name                = "nginx-test-terraform"
  location            = azurerm_resource_group.experiment.location
  resource_group_name = azurerm_resource_group.experiment.name
  os_type             = "Linux"
  ip_address_type     = "public"
  dns_name_label      = "nginx-test-terraform"

  container {
    name   = "nginx"
    image  = "nginx"
    cpu    = "0.5"
    memory = "0.5"
    ports {
      port     = 80
      protocol = "TCP"
    }
  }

  container {
    name   = "nginx2"
    image  = "nginx"
    cpu    = "0.5"
    memory = "0.5"
    ports {
      port     = 81
      protocol = "TCP"
    }
  }
}

Однако 2-й контейнер всегда завершается ошибкой со следующей ошибкой:

[emerg] 1 # 1: сбой bind () до 0.0.0.0:80 (98: Адрес уже используется)

Можно ли как-то исправить это в файле, или это ограничение Terraform на данный момент?

Я пытался сделать то же самое с Файл Yaml:

apiVersion: 2018-10-01
name: dockercompose-exp-01
location: westeurope
type: Microsoft.ContainerInstance/containerGroups
properties:
  osType: Linux
  restartPolicy: Always
  containers:
  - name: helloworld-ms
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      resources:
        requests:
          cpu: 0.5
          memoryInGB: 0.5
      ports:
      - port: 80
        protocol: TCP
  - name: helloworld-nginx
    properties:
      image: nginx
      resources:
        requests:
          cpu: 0.5
          memoryInGB: 0.5
      ports:
      - port: 81
        protocol: TCP
  ipAddress:
    ports:
    - port: 80
      protocol: TCP
    - port: 81
      protocol: TCP
    type: Public
    dnsNameLabel: dockercompose-exp-01

и то же самое происходит.

Следовательно, похоже, что это либо ограничение платформы, либо у меня какая-то синтаксическая ошибка.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 20 апреля 2020

На самом деле ACI не поддерживает сопоставление портов. Вы можете только выставить порты напрямую. И порт уникален.

Итак, ошибка, которую вы сделали, состоит в том, что образ Nginx предоставляет порт 80 в Dockerfile, но вы хотите предоставить порт 81 для второго. Тогда он не может ответить на порт 81. Я рекомендую не развертывать один и тот же образ в одной группе контейнеров, это бесполезно.

...