У меня есть 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 позволит мне сделать это).
Заранее спасибо.
С уважением.