54 lines
2.6 KiB
YAML
54 lines
2.6 KiB
YAML
---
|
|
services:
|
|
pgbackup:
|
|
image: postgres:18-alpine
|
|
container_name: pgbackup
|
|
restart: always
|
|
environment:
|
|
PGPASSWORD: ${POSTGRES_ADMIN_PASSWORD}
|
|
POSTGRES_HOST: postgres
|
|
POSTGRES_USER: ${POSTGRES_ADMIN_USER}
|
|
DB_LIST: ${BKP_DB_LIST}
|
|
TIMEZONE: ${TIMEZONE}
|
|
volumes:
|
|
- ./backups:/backups
|
|
- ./scripts/backup/pg-dump.sh:/pg-dump.sh
|
|
- ./scripts/backup/pg-dump.cron:/etc/crontabs/root
|
|
entrypoint: ["/bin/sh", "-c", "# map host /backups ownership to container backup user\nHOST_UID=$$(stat -c '%u' /backups 2>/dev/null || echo 1000) && HOST_GID=$$(stat -c '%g' /backups 2>/dev/null || echo 1000) && addgroup -g \"$$HOST_GID\" backup 2>/dev/null || true && adduser -D -u \"$$HOST_UID\" -G backup backup 2>/dev/null || true && mkdir -p /var/log /backups && chown -R \"$$HOST_UID\":\"$$HOST_GID\" /var/log /backups 2>/dev/null || true && chmod +x /pg-dump.sh && chown root:root /etc/crontabs/root 2>/dev/null || true && crond -f"]
|
|
|
|
backup-manager:
|
|
image: alpine:latest
|
|
container_name: backup-manager
|
|
restart: always
|
|
depends_on:
|
|
- pgbackup
|
|
environment:
|
|
BACKUP_RETENTION_COUNT: ${BKP_RETENTION_COUNT}
|
|
BACKUP_RETENTION_DAYS: ${BKP_RETENTION_DAYS}
|
|
TIMEZONE: ${TIMEZONE}
|
|
volumes:
|
|
- ./backups:/backups
|
|
- type: volume
|
|
source: odoo-db-data
|
|
target: /odoo_db_data
|
|
read_only: true
|
|
- type: volume
|
|
source: odoo-config
|
|
target: /odoo_config
|
|
read_only: true
|
|
- type: volume
|
|
source: gitea_data
|
|
target: /gitea_data
|
|
read_only: true
|
|
- type: volume
|
|
source: opencloud-data
|
|
target: /opencloud_data
|
|
read_only: true
|
|
- type: volume
|
|
source: opencloud-config
|
|
target: /opencloud_config
|
|
read_only: true
|
|
- ./scripts/backup/manage-backups.sh:/manage-backups.sh
|
|
- ./scripts/backup/backup-manager.cron:/etc/crontabs/root
|
|
entrypoint: ["/bin/sh", "-c", "# install bsdtar for xattr-aware archives\napk add --no-cache libarchive-tools attr >/dev/null \n# map host /backups ownership to container backup user\nHOST_UID=$$(stat -c '%u' /backups 2>/dev/null || echo 1000) && HOST_GID=$$(stat -c '%g' /backups 2>/dev/null || echo 1000) && addgroup -g \"$$HOST_GID\" backup 2>/dev/null || true && adduser -D -u \"$$HOST_UID\" -G backup backup 2>/dev/null || true && mkdir -p /var/log /backups && chown -R \"$$HOST_UID\":\"$$HOST_GID\" /var/log /backups 2>/dev/null || true && chmod +x /manage-backups.sh && chown root:root /etc/crontabs/root 2>/dev/null || true && crond -f"]
|