# documentation: https://grafana.com
# slogan: Grafana is the open source analytics & monitoring solution for every database.
# tags: grafana,analytics,monitoring,dashboard
# logo: svgs/grafana.svg
# port: 3000

services:
  grafana:
    image: grafana/grafana-oss
    environment:
      - SERVICE_FQDN_GRAFANA_3000
      - GF_SERVER_ROOT_URL=${SERVICE_FQDN_GRAFANA}
      - GF_SERVER_DOMAIN=${SERVICE_FQDN_GRAFANA}
      - GF_SECURITY_ADMIN_PASSWORD=${SERVICE_PASSWORD_GRAFANA}
      - GF_DATABASE_TYPE=postgres
      - GF_DATABASE_HOST=postgresql
      - GF_DATABASE_USER=$SERVICE_USER_POSTGRES
      - GF_DATABASE_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - GF_DATABASE_NAME=${POSTGRES_DB:-grafana}
    volumes:
      - grafana-data:/var/lib/grafana
    healthcheck:
      test: ["CMD", "curl", "-f", "http://127.0.0.1:3000/api/health"]
      interval: 5s
      timeout: 20s
      retries: 10
    depends_on:
      - postgresql
  postgresql:
    image: postgres:16-alpine
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-grafana}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 20s
      retries: 10