Files
sqlite-backup-s3/README.md
T
vasyansk 5646ecd6dd
docker-build / Build image (push) Failing after 6s
fix cron after first run + add hc
2026-09-01 11:00:36 +07:00

68 lines
2.4 KiB
Markdown

# бекапирование sqlite в minio
```yaml
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
```bash
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
```
1. myminio - системно! не менять
2. проверьте настройки локации, не должно быть пусто
3. 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`) использует то окружение,
с которым его вызвали.