Назад | Перейти на главную страницу

Как получить доступ к базе данных на Docker Swarm, не открывая порты в Интернете?

Мне было очень трудно придумать для этого короткое и описательное название ... Позвольте мне объяснить:

В классическом Docker (без режима роя) моя система была настроена таким образом, что моя база данных PostgreSQL открывала свой основной порт (5432) только для localhost. Таким образом, я мог подключиться к моему веб-серверу по SSH, туннелировать порт 5432 на localhost и использовать pgAdmin на моем компьютере разработчика, как если бы база данных работала локально на моем компьютере. Это удобно в использовании и (насколько мне известно) довольно безопасно.

Однако в настоящее время я нахожусь в процессе перехода на режим роя. Насколько я знаю (и мог бы погуглить), невозможно открыть сервисный порт только для localhost в режиме роя. Это тоже имеет смысл, поскольку службы могут самопроизвольно перемещаться на другой узел, и вам действительно не нужно беспокоиться о том, какая служба где запущена.

В моем случае служба базы данных будет ограничена одним узлом, поскольку я использую стандартные локальные тома для сохранения базы данных (по крайней мере, на данный момент). Итак, я знаю, на какой машине работает БД.

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

Есть ли лучший способ справиться с этим? Я что-то упускаю?

В стороне, я считаю, что следующие моменты не по теме этого обсуждения: