compose.yaml.j2 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. services:
  2. {{ service_name }}:
  3. image: docker.io/grafana/grafana-oss:12.3.1
  4. restart: {{ restart_policy }}
  5. {% if database_type != 'sqlite' or authentik_enabled %}
  6. environment:
  7. {% if database_type == 'postgres' %}
  8. - GF_DATABASE_TYPE=postgres
  9. {% if database_external %}
  10. - GF_DATABASE_HOST={{ database_host }}
  11. {% else %}
  12. - GF_DATABASE_HOST={{ service_name }}_db
  13. {% endif %}
  14. - GF_DATABASE_NAME={{ database_name }}
  15. - GF_DATABASE_USER={{ database_user }}
  16. - GF_DATABASE_PASSWORD=${GRAFANA_DB_PASSWORD}
  17. - GF_DATABASE_SSL_MODE=disable
  18. {% endif %}
  19. {% if authentik_enabled %}
  20. - GF_AUTH_GENERIC_OAUTH_ENABLED=true
  21. - GF_AUTH_GENERIC_OAUTH_NAME={{ authentik_slug }}
  22. - GF_AUTH_GENERIC_OAUTH_CLIENT_ID=${GRAFANA_OAUTH_CLIENT_ID}
  23. - GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=${GRAFANA_OAUTH_CLIENT_SECRET}
  24. - GF_AUTH_GENERIC_OAUTH_SCOPES=openid profile email
  25. - GF_AUTH_GENERIC_OAUTH_AUTH_URL={{ authentik_url }}/application/o/authorize/
  26. - GF_AUTH_GENERIC_OAUTH_TOKEN_URL={{ authentik_url }}/application/o/token/
  27. - GF_AUTH_GENERIC_OAUTH_API_URL={{ authentik_url }}/application/o/userinfo/
  28. - GF_AUTH_SIGNOUT_REDIRECT_URL={{ authentik_url }}/application/o/{{ authentik_slug }}/end-session/
  29. - GF_AUTH_OAUTH_AUTO_LOGIN=true
  30. {% if traefik_enabled %}
  31. - GF_SERVER_ROOT_URL=https://{{ traefik_host }}.{{ traefik_domain }}
  32. {% endif %}
  33. - GF_AUTH_OAUTH_ALLOW_INSECURE_EMAIL_LOOKUP=true
  34. - GF_AUTH_GENERIC_OAUTH_SKIP_ORG_ROLE_SYNC=true
  35. {% endif %}
  36. {% endif %}
  37. {% if not database_external and (database_type == "postgres") or traefik_enabled %}
  38. networks:
  39. {% if not database_external and database_type != 'sqlite' %}
  40. - {{ service_name }}_backend
  41. {% endif %}
  42. {% if traefik_enabled %}
  43. - {{ traefik_network }}
  44. {% endif %}
  45. {% endif %}
  46. {% if not traefik_enabled %}
  47. ports:
  48. - "{{ ports_http }}:3000"
  49. {% endif %}
  50. volumes:
  51. - {{ service_name }}_data:/var/lib/grafana
  52. {% if traefik_enabled and not swarm_enabled %}
  53. labels:
  54. - traefik.enable=true
  55. - traefik.docker.network={{ traefik_network }}
  56. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=3000
  57. - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
  58. - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  59. - traefik.http.routers.{{ service_name }}_http.entrypoints=web
  60. {% if traefik_tls_enabled %}
  61. - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
  62. - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  63. - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
  64. - traefik.http.routers.{{ service_name }}_https.tls=true
  65. - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
  66. {% endif %}
  67. {% endif %}
  68. {% if not database_external and database_type == "postgres" %}
  69. {{ service_name }}_db:
  70. image: docker.io/library/postgres:17.7
  71. restart: {{ restart_policy }}
  72. environment:
  73. - POSTGRES_USER={{ database_user }}
  74. - POSTGRES_PASSWORD=${GRAFANA_DB_PASSWORD}
  75. - POSTGRES_DB={{ database_name }}
  76. networks:
  77. - {{ service_name }}_backend
  78. healthcheck:
  79. test: ["CMD-SHELL", "pg_isready -U {{ database_user }}"]
  80. start_period: 30s
  81. interval: 10s
  82. timeout: 10s
  83. retries: 5
  84. volumes:
  85. - {{ service_name }}_db:/var/lib/postgresql/data
  86. {% endif %}
  87. {% if not database_external and (database_type == "postgres") or traefik_enabled %}
  88. networks:
  89. {% if not database_external %}
  90. {{ service_name }}_backend:
  91. driver: bridge
  92. {% endif %}
  93. {% if traefik_enabled %}
  94. {{ traefik_network }}:
  95. external: true
  96. {% endif %}
  97. {% endif %}
  98. volumes:
  99. {{ service_name }}_data:
  100. driver: local
  101. {% if not database_external and database_type == 'postgres' %}
  102. {{ service_name }}_db:
  103. driver: local
  104. {% endif %}