У меня есть Postgresql на сервере в контейнере докера. Как я могу подключиться к нему со стороны, то есть с моего локального компьютера? Какую настройку я должен применять, чтобы это разрешить?Подключение к Postgresql в контейнере для докеров снаружи
ответ
Вы можете запустить Postgres этот путь (карта порта):
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
Итак, теперь вы сопоставили порт 5432 вашего контейнера в порту 5432 вашего сервера. -p <host_port>:<container_port>
.so теперь ваши Postgres доступно из public-server-ip:5432
Для теста: Запуск базы данных Postgres (команда выше)
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
05b3a3471f6f postgres "/docker-entrypoint.s" 1 seconds ago Up 1 seconds 0.0.0.0:5432->5432/tcp some-postgres
Go внутри контейнера и создать базу данных:
docker exec -it 05b3a3471f6f bash
[email protected]:/# psql -U postgres
postgres-# CREATE DATABASE mytest;
postgres-# \q
Перейти к локальному хосту (где у вас есть инструмент или клиент psql).
psql -h public-ip-server -p 5432 -U postgres
(пароль mysecretpassword)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mytest | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
Таким образом, вы получаете доступ к базе данных (который работает в грузчиком на сервере) с вашего локального хоста.
Я пропустил «-h localhost» здесь. Спасибо! –
Настройка порта работала для меня –
это не работает для localhost – Tjorriemorrie
я уже работаю Postgres на хост-машине и не хочу, чтобы разрешить соединение от сети, так что я запустить временные сообщения Postgres экземпляр в контейнере и создал базу данных всего две строки:
# Run PostgreSQL
docker run --name postgres-container -e POSTGRES_PASSWORD=password -it -p 5433:5432 postgres
# Create database
docker exec -it postgres-container createdb -U postgres my-db
Вы можете также доступ также через команду docker exec.
$ docker exec -it postgres-container bash
# su postgres
$ psql
Какую команду вы использовали для начала postresql? вы можете открыть порт и нарисовать его – lvthillo
@ lorenzvth7, как? – Sojo