Стек Docker выставлен на публичный ip по имени хоста - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь настроить стек докера для одновременного запуска некоторых моих приложений.Он будет развернут для нескольких клиентов на одном компьютере, и он немного сложен - 3 службы API и два веб-сайта.

Я хотел бы создать стек для каждого клиента, чтобы ограничить накладные расходы, необходимые для настройки этого приложения для нового клиента -Благодаря стеку я могу запускать эти apis и веб-сайты одновременно, предоставляя переменные среды.

У моей рабочей машины есть только один общедоступный IP-адрес.У меня есть докер с установленным режимом роя (необходимо использовать стеки).Однако мой рой - это всего лишь одна машина, и я думаю, что так будет долго - мне просто не нужно больше ресурсов.

Упрощенный составной файл (всего с двумя службами) выглядит следующим образом:

version: "3.2"
services:
  auth_api:
    image: my-registry/auth-api:latest
    stdin_open: true
    tty: true
    ports:
      - 8010:80
    deploy:
      mode: global
    environment:
      - some_var
    volumes:
      - /var/my-app/${INSTANCE_NAME}:/store
    secrets:
      - auth_certificate

  office_web:
    image: my-registry/office-web:latest
    stdin_open: true
    tty: true
    ports:
      - 8012:80
    deploy:
      mode: global

secrets:
  auth_certificate:
    external:
      name: ${INSTANCE_NAME}-auth-identity-certificate

Этот стек создан, и мои приложения доступны на серверах общего IP с портами 8080 и 8081, что является нежелательным поведением.

Предполагая, что: у моего веб-сервера есть один общедоступный IP: A.B.C.D Я настроил DNSуказать два поддоменов на мой веб-сервер:

A.B.C.D api.example.com

A.B.C.D web.example.com

Я хочу настроить весь стек и веб-сервер следующим образом:

  • служба auth_api доступна для общедоступного IP-адреса через порт 80 только с конфигурацией имени хоста api.example.com
  • служба office_web предоставляется для общедоступного IP-адреса через порт 80 только с настройкой имени хоста web.example.com
  • обе службы НЕ доступны по общедоступным IP-адресам на опубликованных портах - 8080,8081
  • , когда я создаю новый стек для нового клиента, я не хочу «что-то» (обратный прокси-сервер?) Автоматическиy заполнить новые публичные привязки имени хоста;Я могу предоставить их в качестве переменных label / env при создании стека, но я не хочу вручную редактировать что-то еще, кроме моего файла compose yaml

Как мне этого добиться?Без режима роя и стеков я использовал jwilder / nginx-proxy, который прекрасно работает, но стеки (режим роя) не поддерживаются этим замечательным образом докера.

Я не знаю, с чего начать, в «режиме без роя» я могу использовать конфигурацию портов в формате 127.0.0.1:8080:80, и мои контейнеры не были доступны по общедоступным IP-адресам.Я использовал jwilder / nginx-proxy, который автоматически заполняет IP-адрес контейнера и привязывает к нему общедоступный IP-адрес, используя имя хоста, передаваемое в качестве переменной env.

Как мне добиться чего-то подобного?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...