Как подключаться к postgresql в docker
Установил оф образ postgres и запускаю его командой
sudo docker run -it -p 5432:5432 --name database -e POSTGRES_PASSWORD=q postgres
Получаю многа букаф, но запускается сервер postgresql в docker-е.
2024-03-06 08:47:10.553 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
Далее пытаюсь подключиться к этой бд с локальной машины командой
psql -U postgres
И получаю
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
При этом на локальной машине я отключил postgresql service, чтобы не подключаться к локальному cерверу postgresql
Как же подключаться к серверу postgres в docker.Еще я хочу узнать путь тома, чтобы пробросить его в локальную директорию, чтобы данные, которые попадают в postgres сервер в контейнере, сохранаялись на локальной машине и сервер в контейнере работал именно с данными на локальной машине.
Подключить том я хочу ключом
-v /var/lib/local/postgres/postgres-data:/var/lib/docker/postgres/postgresql-data
но не знаю какие пути указывать, но как я понимаю, до двоеточия та папка базы, что на локальной машине(предполагаю, что могу указать люую удобную), а то что после, папка базы в контейнере(вот где в контейнере хранятся базы и прочее я не знаю). Если я правильно понимаю, то сервер базы в контейнере, вместо обращения к своей внутренней папке, будет обращаться к локальной(той что до двоеточия)и таким образом все данные которые попадают в контенер будут сохранены на локале. Поправьте если я неправильно понял.
Ответы (1 шт):
Собственно, ошибка не в докере, а в том, как запускается клиент:
connection to server on socket "/var/run/postgresql/.s.PGSQL.5432"
это юникс сокет, а не IP.
Добавьте в командную строку ip адрес psql -h 127.0.0.1 -U postgres
Теперь про подключение тома. В postgres@latest
базы данных лежат в каталоге /var/lib/postgresql/data/
, поэтому для подключения локальной базы, нужно мапить так: -V /path/to/db/on/host:/var/lib/postgresql/data/