Установка Postgresql в Docker

В этой задаче нужно запустить 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, потому что он нагляднее.

PQ VPS сервера в 28+ странах.