bollwerk/docker-compose.yml
Jens Reinemann d66f0d65c3 feat: tägliches PostgreSQL-Backup mit 1 GB Rotation (#87)
- backup/Dockerfile: Alpine 3.21 + postgresql-client + dcron
- backup/backup.sh: pg_dump -> MD5-Checksum-Vergleich (skip bei unveränderter DB)
  -> gzip-komprimiertes Backup mit Timestamp
  -> Rotation: älteste .sql.gz löschen bis Gesamtgröße < 1 GB
- docker-compose.yml: neuer Service 'backup', Volume 'backup_data'
- Cronjob: täglich 03:00 UTC
2026-05-17 11:06:52 +02:00

45 lines
1.1 KiB
YAML

services:
db:
image: postgres:17-alpine
container_name: krisenvorrat-db
restart: unless-stopped
environment:
POSTGRES_DB: krisenvorrat
POSTGRES_USER: krisenvorrat
POSTGRES_PASSWORD: krisenvorrat
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
krisenvorrat:
build: .
container_name: krisenvorrat-server
restart: unless-stopped
ports:
- "8080:8080"
environment:
- KRISENVORRAT_JWT_SECRET=sRKnyOBAgwkoDYptqixc9I26SlUWFhGXL5jaTM1vPbe78Q0r
- KRISENVORRAT_DB_URL=jdbc:postgresql://db:5432/krisenvorrat
- KRISENVORRAT_DB_USER=krisenvorrat
- KRISENVORRAT_DB_PASSWORD=krisenvorrat
depends_on:
- db
backup:
build: ./backup
container_name: krisenvorrat-backup
restart: unless-stopped
environment:
- POSTGRES_HOST=db
- POSTGRES_DB=krisenvorrat
- POSTGRES_USER=krisenvorrat
- POSTGRES_PASSWORD=krisenvorrat
volumes:
- backup_data:/backups
depends_on:
- db
volumes:
pgdata:
backup_data: