# See versions: https://github.com/gramps-project/gramps-web/pkgs/container/grampsweb

services:

  gramps_app: &gramps_app
    image: ghcr.io/gramps-project/grampsweb:v25.4.1
    container_name: gramps_app
    depends_on:
      - gramps_redis
    restart: unless-stopped
    ports:
      - "127.0.0.1:{{ gramps_port }}:5000"  # host:docker
    environment:
      GRAMPSWEB_TREE: "Gramps"  # will create a new tree if not exists
      GRAMPSWEB_SECRET_KEY: "{{ gramps_secret_key }}"
      GRAMPSWEB_BASE_URL: "https://gramps.vakhrushev.me"
      GRAMPSWEB_REGISTRATION_DISABLED: "true"
      GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://gramps_redis:6379/0"
      GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://gramps_redis:6379/0"
      GRAMPSWEB_RATELIMIT_STORAGE_URI: "redis://gramps_redis:6379/1"
      GRAMPSWEB_EMAIL_HOST: "{{ postbox_host }}"
      GRAMPSWEB_EMAIL_PORT: "{{ postbox_port }}"
      GRAMPSWEB_EMAIL_HOST_USER: "{{ postbox_user }}"
      GRAMPSWEB_EMAIL_HOST_PASSWORD: "{{ postbox_pass }}"
      GRAMPSWEB_EMAIL_USE_TLS: "false"
      GRAMPSWEB_DEFAULT_FROM_EMAIL: "gramps@vakhrushev.me"
      GUNICORN_NUM_WORKERS: 2
      # media storage at s3
      GRAMPSWEB_MEDIA_BASE_DIR: "s3://av-gramps-media-storage"
      AWS_ENDPOINT_URL: "{{ gramps_s3_endpoint }}"
      AWS_ACCESS_KEY_ID: "{{ gramps_s3_access_key_id }}"
      AWS_SECRET_ACCESS_KEY: "{{ gramps_s3_secret_access_key }}"
      AWS_DEFAULT_REGION: "{{ gramps_s3_region }}"
    volumes:
      - ./data/gramps_users:/app/users  # persist user database
      - ./data/gramps_index:/app/indexdir  # persist search index
      - ./data/gramps_thumb_cache:/app/thumbnail_cache  # persist thumbnails
      - ./data/gramps_cache:/app/cache  # persist export and report caches
      - ./data/gramps_secret:/app/secret  # persist flask secret
      - ./data/gramps_db:/root/.gramps/grampsdb  # persist Gramps database
      - ./data/gramps_media:/app/media  # persist media files

  gramps_celery:
    <<: *gramps_app  # YAML merge key copying the entire grampsweb service config    
    container_name: gramps_celery
    depends_on:
      - gramps_redis
    restart: unless-stopped
    ports: []
    command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2

  gramps_redis:
    image: valkey/valkey:8.1.1-alpine
    container_name: gramps_redis
    restart: unless-stopped