Я пытаюсь использовать докер-контейнер для настройки SSH-туннеля к удаленной базе данных, доступной только через SSH.У меня есть сеть докеров с несколькими контейнерами, и я хочу сделать базу данных доступной для всех контейнеров в сети.
Файл Docker для контейнера SSH выглядит следующим образом:
FROM debian:stable
RUN apt-get update && apt-get -y --force-yes install openssh-client autossh postgresql-client
COPY .ssh /root/.ssh
RUN chown root:root /root/.ssh/config
EXPOSE 12345
ENTRYPOINT ["/usr/bin/autossh", "-M", "0", "-v", "-T", "-N", "-4", "-L", "12345:localhost:1234", "user@remotedb" ]
ВнутриДиректория .ssh - это мои ключи и файл конфигурации, который выглядит следующим образом:
Host remotedb
StrictHostKeyChecking no
ServerAliveInterval 30
ServerAliveCountMax 3
Сам туннель работает с этим контейнером, то есть я могу получить доступ к БД из него как localhost: 12345.
Теперь я хочу получить к нему доступ также из других контейнеров в той же сети.
Мой docker-compose.yml выглядит следующим образом (я закомментировал некоторые испытания):
version: '2'
networks:
my_network:
driver: bridge
ipam:
config:
- subnet: 10.12.0.0/16
gateway: 10.12.0.1
services:
service_1:
image: my/image:alias
volumes:
- somevolume
# links:
# - my_ssh
ports:
- "8080"
environment:
ENV1: blabla
networks:
my_network:
ipv4_address: 10.12.0.12
my_ssh:
build:
context: ./dir_with_Dockerfile
# ports:
# - "23456:12345"
expose:
- "12345"
networks:
my_network:
ipv4_address: 10.12.0.13
Я пытался получить доступ к удаленной базе данных изнутри service_1 с именами хостов «my_ssh», ipv4_address, «localhost» и с портами 12345 и 23456. Ни одна из этих комбинаций не сработала.Где я могу пойти не так?
Или как еще я могу установить постоянное соединение из своих контейнеров с удаленной базой данных?