Не получается создать подключение в DataGrip к бд Postgres поднятой в Docker

Поднял контейнер с postgresql в Docker

Передал через docker-compose.yml

Следующие настройки:

---

services:

  postgresql_01:
    image: postgres
    container_name: gpnpartnerdb
    restart: always
    volumes:
      - /data/postgresql_01:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: gpnpartnerdb

Далее выполнил команды в консоли:

docker ps - Посмотрел список всех контейнеров для получения ID нужного

docker exec -it 9047c298de43 bash - перешёл в этот контейнер

psql -h localhost -p 5432 -U postgres -W mytest - подключился к моей дб с названием mytest

Далее в консоли был запрошен пароль я его ввёл и подключился к mytest

Затем попытался подключиться к этой бд через DataGrip Для этого посмотрел какое подключение использует данная бд в консоли командой \connifo

Получил ответ :

mytest=#  \conninfo
You are connected to database "mytest" as user "postgres" on host "localhost" (address "127.0.0.1") at port "5432".

И попытался с этими данными подключиться через DataGrip к данной бд, однако это сделать мне не удалось, но я получил следующую ошибку

[08001] Подсоединение по адресу localhost:5432 отклонено. Проверьте что хост и порт указаны правильно и что postmaster принимает TCP/IP-подсоединения.
java.net.ConnectException: Connection refused: connect.
.

Решением это проблемы занимаюсь второй день. В Docker я абсолютный новичок. Это мой первый раз, поэтому буду благодарен за любую помощь и советы в этом вопросе.

В конце оставлю скрин настроек моего подключения в DataGrip

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Exploding Kitten

Чтобы у вас была возможность подключиться по localhost:5432 вы должны сделать публикацию порта. В docker-compose это делается так (нужно добавить в ваш postgresql_01 сервис):

ports:
  - 5432:5432

Если не хотите "открывать" порт и хост система Linux, то можно будет подключаться по <container_ip>:<db_port>, где container_ip можно получить через docker inspect <имя контейнера>.

→ Ссылка