version: '3.8'

services:
  app:
    environment:
      - GITEA_DB_TYPE=postgres
      - GITEA_DB_HOST="db:5432"
      - GITEA_DB_NAME=gitea
      - GITEA_DB_USER=gitea
    secrets:
      - db_password
  db:
    image: postgres:15.10
    deploy:
      labels:
        backupbot.backup.pre-hook: "/pg_backup.sh backup"
        backupbot.backup.volumes.db.path: "backup.sql"
        backupbot.restore.post-hook: '/pg_backup.sh restore'
    environment: 
      - POSTGRES_DB=gitea
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD_FILE=/run/secrets/db_password
    secrets:
      - db_password
    volumes:
      - db:/var/lib/postgresql/data
    networks:
      - internal
    configs:
        - source: pg_backup
          target: /pg_backup.sh
          mode: 0555

secrets:
  db_password:
    name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
    external: true

volumes:
  db:

configs:
  pg_backup:
    name: ${STACK_NAME}_pg_backup_${PG_BACKUP_VERSION}
    file: pg_backup.sh