В этой задаче нужно запустить Postgresql в Docker. Использование ниже Dockerfile для создания собственного образа Postgresql излишне, так как не планируется тонкая настройка Postgresql. Но для удобства в будущем лучше явно указать версию Postgresql.
mkdir /build cd /build nano Dockerfile
FROM postgres:16-alpine
Создаем образ
docker build -t postgres_16 .
Настраиваем файл Docker Composer
nano docker-compose.yml
services: postgres: image: postgres_16 container_name: postgres_db volumes: - ./db/postgres:/var/lib/postgresql/data ports: - 5432:5432 environment: - POSTGRES_PASSWORD=pgroot - POSTGRES_USER=postgres - POSTGRES_DB=state
Запускаем
docker-compose up -d
Войдем в контейнер, чтобы импортировать бэкап базы данных
docker exec -it postgres_db bash psql -U postgres postgres=# CREATE DATABASE state; exit psql -U postgres dbname < /var/lib/postgresql/data/infile.sql
Всё! Теперь у нас запущен сервер postgresql и импортирована база данных. Файлы базы данных хранятся не в докере, а на хостовом компьютере в папке db/postgres, указано как docker-compose.yml.
В этом варианте установим PostgreSQL 15 в Докере без создания докер файлов, а просто из командной строки. И подключимся к нему, например программой DBeaver. В первую очередь заходим на https://hub.docker.com/_/postgres и читаем документацию по запуску PostgreSQL в контейнере и описание переменных окружения доступных внутри контейнера.
docker run -d --rm -e POSTGRES_PASSWORD=adm_password -e POSTGRES_USER=admin -e POSTGRES_DB=mybd1 -p 5432:5432 postgres:15
Конечно нужно еще пробросить Volumes
-v /custom/mount:/var/lib/postgresql/data
Подключаем DBeaver к PostgreSQL, создаем базу данных при помощи интерфейса DBeaver, а саму таблицу создаем SQL запросом, как показано на скриншоте. Всё! Лучше использовать первый способ с docker-compose.yml, потому что он нагляднее.