Как мне SSH из контейнера Docker на удаленный сервер - PullRequest
0 голосов
/ 14 апреля 2019

Я создаю образ докера из образа postgres, и я хотел бы заполнить его некоторыми данными.

Я следую за разделом initialization-scripts документации.

Но проблема, с которой я сейчас сталкиваюсь, заключается в том, что моим сценариям инициализации необходимо подключиться по ssh к удаленной базе данных и получить оттуда немые данные.По сути, что-то вроде этого:

ssh remote.host "pg_dump -U user -d somedb" > some.sql

, но это не с ошибкой, что ssh: command not found

Вопрос теперь, в общем, как мне выполнить ssh из док-контейнера на удаленный сервер.В этом случае, в частности, как мне выполнить ssh из докера-контейнера на удаленный сервер баз данных в рамках этапа инициализации заполнения базы данных postgres?

1 Ответ

1 голос
/ 14 апреля 2019

Как правило, вы так не делаете. Типичные образы Docker содержат только сервер, на котором они работают, и некоторые основные инструменты, но сетевые клиенты, такие как ssh или curl, как правило, не являются частью этого. В частном случае ssh безопасное управление требуемыми учетными данными также сложно (не невозможно, но не очевидно).

В вашем конкретном случае я мог бы изменить порядок вещей, чтобы в ваших сценариях не было сложного предположения, что база данных работает локально. Подготовьте пустой контейнер базы данных, затем запустите сценарий с хоста , нацеленного на эту пустую базу данных. Может даже работать, чтобы переменные окружения PGHOST и PGPORT указывали на имя хоста вашего хоста и порт, на котором вы публикуете интерфейс базы данных, а затем запускали этот скрипт без изменений.

Если присмотреться к этой конкретной команде, вам также может быть лучше настроить задание cron для запуска этого конкретного дампа базы данных и размещения содержимого где-нибудь. Затем разработчик может получить снимок данных, не подключаясь к работающему серверу базы данных, и вы можете ограничить число людей, которые будут иметь доступ. Если у вас есть этот файл дампа, вы можете использовать механизм /docker-entrypoint-initdb.d для его загрузки при первом запуске.

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