Мне нужно опубликовать sh порт, но не выставлять (для всех сетей) в Docker Swarm кластер - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть Docker Swarm кластер с 3 менеджерами и 3 работниками. У меня есть стек с 2 службами с app и activemq (для очередей заданий).

Это мой docker -компонентный файл:

version: '3.3'
services:
  app:
    image: php:7.4-apache
    ports:
      - "8080:80"
    volumes:
      - /var/logs:/var/www/app/logs
    deploy:
      mode: global
      resources:
        limits:
          cpus: "2"
          memory: 2G
      placement:
        constraints: [node.role == worker]
      restart_policy:
        condition: on-failure
  activemq:
    image: rmohr/activemq
    volumes:
      - /var/logs:/var/www/app/logs
    ports:
      - 61617:61616
      - 61614:61613
      - 8162:8161
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == worker]
      restart_policy:
        condition: on-failure

С этой конфигурацией все порты, опубликованные в сервисе activemq , доступны для всех сетей.

Мне нужно предоставить порты для постановки в очередь заданий (61617: 61616 и 61614: 61613) только из службы приложений в режиме локального хоста (недоступно для всех сетей).

И мне нужно предоставить порты для доступа к просмотру activemq очередей (8162: 8161), но мне не нравится открывать этот порт для всех сетей. Любой человек с моим публичным c IP и портом (8162) может получить доступ к моему activemq веб-менеджеру (и мне это не нравится, это небезопасно).

ПРИМЕЧАНИЕ: Я пытался с (LOCAL_IP): 8162: 8161, но Docker Swarm пропустите эту конфигурацию (я получу доступ к ней через туннель s sh, если docker Docker Swarm позволит мне сделать это).

Заранее спасибо.

С уважением.

...