version: '3'
services:
  miniflux:
    image: miniflux/miniflux:latest
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      - DATABASE_URL=postgres://{{ miniflux.db.user }}:{{ miniflux.db.password }}@db/{{ miniflux.db.name }}?sslmode=disable
      - RUN_MIGRATIONS=1
      - CREATE_ADMIN=1
      - ADMIN_USERNAME={{ miniflux.admin.user }}
      - ADMIN_PASSWORD={{ miniflux.admin.password }}
      - BASE_URL=https://rss.tobiasmanske.de
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.miniflux.rule=Host(`rss.tobiasmanske.de`)"
      - "traefik.http.routers.miniflux.entryPoints=websecure"
      - "traefik.http.services.miniflux.loadbalancer.server.port=8080"
      - "com.centurylinklabs.watchtower.scope=update"
    networks:
      - backend
      - gateway

  db:
    image: postgres:13
    restart: unless-stopped
    environment:
      - POSTGRES_USER={{ miniflux.db.user }}
      - POSTGRES_PASSWORD={{ miniflux.db.password }}
    volumes:
      - database:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "miniflux"]
      interval: 10s
      start_period: 30s
    networks:
      - backend

volumes:
  database:

networks:
  backend:
    internal: true
  gateway:
    external: true
    name: gateway