Когда я подключаюсь через psql с помощью этой команды docker exec -it 4e18793cb23c psql -U postgres mytestdb, я могу видеть свою базу данных и работать с ней. Но когда я подключаюсь с помощью dbeaver к своему док-контейнеру postgres, он не показывает мне мои данные. Но когда я хочу создать такую же базу данных, он говорит, что она существует. Кроме того, при выборе таблиц пишет, что таблица не существует.
Несколько вещей, которые я проверил:
/var/lib/postgres не существуетdocker volume inspect pgdata
[
{
"CreatedAt": "2024-04-13T09:03:53+02:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/pgdata/_data",
"Name": "pgdata",
"Options": null,
"Scope": "local"
}]
У меня не установлен Postgres непосредственно на моем компьютере.
Как мне сделать так, чтобы мои базы данных, таблицы и все остальное отображались в dbeaver?





Не знаю, как вы запускаете контейнер PostgreSQL, но, скорее всего, это будет ключом.
Докер-клиент
Если вы запускаете PostgreSQL с помощью клиента Docker, вы должны сделать что-то вроде этого:
docker run --rm -p 5432:5432 -e POSTGRES_PASSWORD=password \
--name postgres postgres:latest
Вы упоминаете, что начинаете свой контейнер с docker start, но я предполагаю, что это означает, что на каком-то этапе вы бы запустили его с docker run.
ИМХО, маршрут Docker Compose для запуска базы данных лучше, поскольку он документирует все детали, связанные с запуском контейнера.
Докер Составление
Если вы используете Docker Compose, то примерно так:
🗎 docker-compose.yml
version: "3.9"
services:
postgres:
image: postgres:latest
container_name: postgres
ports:
- 5432:5432
volumes:
- ./create-table.sql:/docker-entrypoint-initdb.d/create-table.sql:ro
- ./pgdata:/var/lib/postgresql/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
ports гарантирует, что база данных будет доступна за пределами сети Docker.
Существует два варианта подключения тома: (1) для сценария инициализации и (2) для сохранения базы данных между сеансами.
На снимке экрана ниже вы можете видеть работающий стек Docker Compose (верхняя панель терминала), соединение с использованием docker exec в этом контейнере (нижняя панель терминала) и соединение от DBeaver.
извини. уточнение. первая команда в моем вопросе — как получить доступ к psql в моем терминале после запуска докера с помощью docker start
РЕШЕНИЕ: это безумие, но проверка «показать все базы данных» в настройках подключения решила эту проблему.
Я не использую Docker Compose. Я либо начинаю его с команды в моем вопросе, либо с
docker start [containername], как показано в руководстве по Docker Hub Postgres или как показано в некоторых видеороликах на YouTube.