68 lines
2.4 KiB
Markdown
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`) использует то окружение,
|
|
с которым его вызвали.
|