services: forest: image: docker.io/kasperhermansen/forest-server:${FOREST_IMAGE_VERSION:-main} restart: always env_file: ".env" command: | /app/forest-server serve ports: - "4040:4040" environment: RUST_LOG: "forest=debug,info" LOG_LEVEL: short FOREST_HOST: 0.0.0.0:4040 networks: - public - internal healthcheck: test: ["CMD", "/app/forest-server", "--external-host", "http://127.0.0.1:4040", "admin", "status"] interval: 10s timeout: 10s retries: 3 start_period: 30s depends_on: postgres: condition: service_healthy restart: true postgres: image: postgres:18 restart: always shm_size: 128mb env_file: ".env" networks: - internal volumes: - ./data/postgres/18:/var/lib/postgresql/18/docker environment: POSTGRES_USER: forest POSTGRES_DB: forest healthcheck: test: ["CMD", "pg_isready", "-U", "forest", "-d", "forest"] interval: 10s retries: 5 start_period: 30s timeout: 10s backup: image: prodrigestivill/postgres-backup-local restart: always volumes: - ./data/backups:/backups env_file: .env links: - "postgres" networks: - internal environment: - POSTGRES_HOST=postgres - POSTGRES_DB=forest - POSTGRES_USER=forest - POSTGRES_EXTRA_OPTS=-Z1 --schema=public --blobs - BACKUP_ON_START=TRUE - SCHEDULE=@daily # or cron: "0 2 * * *" - BACKUP_KEEP_DAYS=7 # keep daily backups for 7 days - BACKUP_KEEP_WEEKS=4 # keep weekly backups for 4 weeks - BACKUP_KEEP_MONTHS=6 # keep monthly backups for 6 months - HEALTHCHECK_PORT=8080 networks: public: internal: