Comments 5
docker run -d \-p 5432:5432 \--name myPostgreSQL \-e POSTGRES_USER=<ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ> \-e POSTGRES_PASSWORD=<ВАШ ПАРОЛЬ ОТ ЭТОГО ПОЛЬЗОВАТЕЛЯ> \postgres:16
Вы же не смонтировали волюм с данными, все экспортированные данные исчезнут после перезапуска, к тому-же порт постгреса торчит наружу.
Ну и всё делается гораздо легче и быстрее:
rsync -av /home/user/postgres_data new_server_ip:/home/user
Копирует папку с данными и их атрибуты, остается только на new_server запустить образ с Postgres с примонтированными данными.
А если БД большая - так и никого места не хватит, дамп, копия дампа в контейнере, данные из дампа...
В итоге - сборник советов как делать не нужно.
Спасибо, похоже, что так и есть. Но как тогда обращаться к субд, если порт не открывать?
Вариант 1: у Вас PGAdmin и Postgres на одной машине в свойствах подключения можно указать имя или IP контейнера в докерной сети, порт внутри доступен и без расшаривания во вне.
Вариант 2: PGAdmin или любой другой клиент поддерживают подключение через ssh - видел абсолютно в любом клиенте. Тогда в подключении к ssh вбиваете данные от VPS, а в подключении к серверу localhost, тогда, возможно придется пробросить порт через -p, но только на локальный хост: -p127.0.0.1:5432:5432
Касательно ssh. Перейдите на ключи и отключите парольный доступ. Так жить будет уже спокойнее.
Перенос БД postgresQL из Docker'а на локальном хосте на Docker VPS: покомандная шпаргалка