version: '3.9'
services:
  rss:
    image: miniflux/miniflux:latest
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
    depends_on:
      db:
        condition: service_healthy
      morss:
        condition: service_healthy
    environment:
      - RUN_MIGRATIONS=1
    env_file:
      - .env
    networks:
      - internal
      - proxy
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    volumes:
      - db:/var/lib/postgresql/data
    env_file:
      - .env
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "rss"]
      interval: 10s
      start_period: 30s
    networks:
      - internal
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
  morss:
    image: pictuga/morss:latest
    restart: unless-stopped
    environment:
      - MAX_TIME=10
      - MAX_ITEM=-1
      - LIM_TIME=120
      - LIM_ITEM=-1
      - CACHE=diskcache
      - CACHE_SIZE=2048000000
    healthcheck:
      test: ["CMD", "/usr/bin/wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8000"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 30s
    networks:
      - internal
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

volumes:
  db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: "/srv/docker/rss/db"

networks:
  internal:
    ipam:
      driver: default
  proxy:
    external: true