services:
  redlight:
    image: git.scrunkly.cat/michelle/redlight:latest
    restart: unless-stopped
    ports:
      - "3001:3001"
    env_file: ".env"
    volumes:
      - ./uploads:/app/uploads
      - ./keys:/app/keys
    depends_on:
      postgres:
        condition: service_healthy
      dragonfly:
        condition: service_healthy
    networks:
      - frontend
      - backend

  postgres:
    image: postgres:17-alpine
    restart: unless-stopped
    env_file: ".env"
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U redlight"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - backend

  dragonfly:
    image: ghcr.io/dragonflydb/dragonfly:latest
    restart: unless-stopped
    ulimits:
      memlock: -1
    volumes:
      - dragonflydata:/data
    healthcheck:
      test: ["CMD", "redis-cli", "-p", "6379", "ping"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - backend

# Use valkey, if your system is too old for DragonflyDB
#  valkey:
#    image: valkey/valkey:9
#    restart: unless-stopped
#    ulimits:
#      memlock: -1
#    volumes:
#      - valkeydata:/data
#    healthcheck:
#      test: ["CMD", "redis-cli", "-p", "6379", "ping"]
#      interval: 5s
#      timeout: 5s
#      retries: 5
#    networks:
#      - backend

volumes:
  pgdata:
  dragonflydata:
  #valkeydata:

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
    internal: true
