1.2.1
бекапирование sqlite в minio
services:
sqlite_backup:
image: git.realmanual.ru/pub/sqlite-backup-s3
container_name: sqlite_backup
restart: always
volumes:
- ./var/lib/data/:/data
environment:
- DB_FILE
- CRONTAB
- DELETE_AFTER
- TZ
- MINIO_PATH
- MINIO_ACCOUNT_ID
- MINIO_APPLICATION_KEY
- MINIO_ENDPOINT
- MINIO_LOCATION
- HEALTHCHECK_URL
- HEALTHCHECK_UUID
пример .env
DB_FILE=/data/db.sqlite
CRONTAB="00 06 * * *"
DELETE_AFTER=10
TZ=Asia/Novosibirsk
MINIO_PATH=myminio://sqlite/master/
MINIO_ACCOUNT_ID=account
MINIO_APPLICATION_KEY=key
MINIO_ENDPOINT=https://s3.domain.ru
MINIO_LOCATION=ru-nsk
# необязательно: пинг в healthchecks.io (в т.ч. self-hosted)
HEALTHCHECK_URL=https://hc.domain.ru/ping
HEALTHCHECK_UUID=00000000-0000-0000-0000-000000000000
- myminio - системно! не менять
- проверьте настройки локации, не должно быть пусто
- DELETE_AFTER - в днях
Healthchecks
Если HEALTHCHECK_URL пуст — пинги не отправляются, бекап работает как обычно.
Итоговый адрес: ${HEALTHCHECK_URL}/${HEALTHCHECK_UUID}
| Момент | Запрос |
|---|---|
| старт бекапа | .../${HEALTHCHECK_UUID}/start |
дамп снят, проверен PRAGMA integrity_check, запакован, залит в s3, размер в s3 сверен с локальным, старое удалено |
.../${HEALTHCHECK_UUID} |
| любая ошибка на любом шаге | .../${HEALTHCHECK_UUID}/fail |
Для self-hosted инстанса HEALTHCHECK_URL — это адрес его ping-эндпоинта, например https://hc.domain.ru/ping.
Как передаётся окружение в cron
crond из busybox запускает джобы с пустым окружением, поэтому entrypoint.sh
сохраняет env контейнера в /tmp/container.env (права 600), а cron-запись
вызывает /scripts/backup.sh --from-cron, который его подгружает.
Ручной запуск (docker exec ... /scripts/backup.sh) использует то окружение,
с которым его вызвали.
Languages
Shell
95%
Dockerfile
5%