leadsdoit/postgres

By leadsdoit

Updated 17 days ago

PostgreSQL + script backup/restore

Image
Databases & Storage

128

leadsdoit/postgres-16

Данный образ основан на образе postgres:16.2-alpine3.19 но с возможность делать удобно дампы и восстановление из них.

  • добавлена настройка временной зоны

Работа с дампами

Дампы хранятся в папке /backup.

Для доступа к полученным дампам необходимо подключить внешнее хранилище

-v ./dump:/backup

Пример docker compose

version: '3.8'

services:
    db:
        image: leadsdoit/postgres-16:1.0
        container_name: docker_db_pgsql
        restart: always
        volumes:
            - "./db:/var/lib/postgresql/data"
            - "./dump:/backup"
        environment:
            POSTGRES_DB: ${DB_DATABASE}
            POSTGRES_USER: ${DB_USERNAME}
            POSTGRES_PASSWORD: ${DB_PASSWORD}
Создать дамп. dump

Чтоб создать бекап из базы в текущем контейнере

  • Если через docker

    docker exec -it <имя контейнера> dump

  • Если создано через docker compose

    docker compose exec <имя сервиса> dump

Восстановить дамп. restore

Чтобы залить в контейнер дамп, скопируйте в подключенный диск дамп или запустите контейнер и скопируйте его через команду

docker cp <путь к файлу> <контейнера>:/backup/<имя дампа>

  • Если через docker

    docker exec -it <имя контейнера> restore

  • Если создано через docker compose

    docker compose exec <имя сервиса> restore

Далее надо выбрать один из существующих дампов

Переменные

Все те же что и в родительском образе postgres

POSTGRES_PASSWORD

Обязательна. При первом запуске контейнера задает пароль главного пользователя

POSTGRES_USER

При первом запуске контейнера создаст главного пользователя. Если не указать будет postgres

POSTGRES_DB

При первом запуске контейнера создаст базу данных с этим именем. Если не указать - будет равно POSTGRES_USER

Docker Pull Command

docker pull leadsdoit/postgres