Skip to main content

Postgresql

Основа инструкции на хабре

Минимальный compose файл с возможностью подключиться извне, логином и паролем:

services:
  postgres:
    image: postgres:16.3
    environment:
      POSTGRES_DB: "testdb"
      POSTGRES_USER: "testuser"
      POSTGRES_PASSWORD: "testpass"
    ports:
      - "5432:5432"

Точка входа для инициализации базы данных: docker-entrypoint-initdb.d Все *.sql или *.sh файлы в этом каталоге - скрипты для инициализации БД. Детали использования:

  1. если БД уже была проинициализирована ранее, то никакие изменения к ней применяться не будут;

  2. если в каталоге присутствует несколько файлов, то они будут отсортированы по имени с использованием текущей локали (по умолчанию en_US.utf8).

services:
  postgres:
    image: postgres:16.3
    environment:
      POSTGRES_DB: "testdb"
      POSTGRES_USER: "testuser"
      POSTGRES_PASSWORD: "testpass"
    volumes:
      - .:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"

Для постоянного размещения БД нужно подмонтировать соответствующий каталог (куда будут сохраняться данные) в контейнер и при необходимости переопределить переменную окружения PGDATA

services:
  postgres:
    image: postgres:16.3
    environment:
      POSTGRES_DB: "testdb"
      POSTGRES_USER: "testuser"
      POSTGRES_PASSWORD: "testpass"
      PGDATA: "/var/lib/postgresql/data/pgdata"
    volumes:
      - .:/docker-entrypoint-initdb.d
      - mydata:/var/lib/postgresql/data
    ports:
      - "5432:5432"
volumes:
  mydata:

Подключение к базе через psql

psql -d testdb -U testuser -W -h 127.0.0.1 -p 5430