Простой докер контейнер, позволяющий осуществлять дампы базы данных с определенной переодичностью в хранилище s3.
ConnectionStrings__Postgres
- строка подключения к бдS3StorageOptions__ServiceUrl
- урл сервиса s3S3StorageOptions__AccessKeyId
- Id сервисного аакаунтаS3StorageOptions__SecretAccessKey
- секретный ключ доступаS3StorageOptions__BucketName
- название бакетаS3StorageOptions__PathPrefix
- префик путиScheduleCron
- cron выражение, задающее расписание создания дамповPgDumpOptions__ExtraArgs
- дополнительные аргументы командной строки для pg_dump
Дампы базы сохраняются в хранилище s3 по ключу <префикс пути>/dump_<дата и время дампа>.backup
. Также в этой же папке находится файл с название latest.backup
, в который перезаписывается актуальное состояние базы.
Данный контейнер можно добавить как сервис в docker-compose.yml
services:
pgdump:
image: 'ghcr.io/rtu-tc/auto-pgdump:16-2'
environment:
ConnectionStrings__Postgres: "Host=db;Port=5432;Database=<название базы данных>;Username=<имя пользователя>;Password=<пароль>"
S3StorageOptions__ServiceUrl: "<адрес s3 хранилища>"
S3StorageOptions__AccessKeyId: "<ид ключа>"
S3StorageOptions__SecretAccessKey: "<ключ>"
S3StorageOptions__BucketName: "<имя бакета>"
S3StorageOptions__ForcePathStyle: false
PgDumpOptions__ExtraArgs: "-Fc" # переключает pg_dump в режим custom, что уменьшает объем дампа, но увеличивает время его сниятия
ScheduleCron: "0 0/5 * * * ?"
db:
image: 'postgres:16.2'