compose.yaml.j2 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ---
  2. services:
  3. {{ service_name }}:
  4. image: docker.io/prom/prometheus:v3.9.1
  5. restart: {{ restart_policy }}
  6. command:
  7. - --config.file=/etc/prometheus/prometheus.yaml
  8. - --storage.tsdb.retention.time={{ metrics_retention_time }}
  9. {% if metrics_retention_size != '0' %}
  10. - --storage.tsdb.retention.size={{ metrics_retention_size }}
  11. {% endif %}
  12. {% if metrics_enable_remote_write %}
  13. - --web.enable-remote-write-receiver
  14. {% endif %}
  15. {% if traefik_enabled %}
  16. {% if traefik_tls_enabled %}
  17. - --web.external-url=https://{{ traefik_host }}.{{ traefik_domain }}
  18. {% else %}
  19. - --web.external-url=http://{{ traefik_host }}.{{ traefik_domain }}
  20. {% endif %}
  21. {% endif %}
  22. {% if not traefik_enabled %}
  23. ports:
  24. - "{{ ports_http }}:9090"
  25. {% endif %}
  26. volumes:
  27. - {{ service_name }}_data:/prometheus
  28. - ./config/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro
  29. {% if traefik_enabled %}
  30. networks:
  31. {{ traefik_network }}:
  32. labels:
  33. - traefik.enable=true
  34. - traefik.docker.network={{ traefik_network }}
  35. - traefik.http.services.{{ service_name }}_web.loadBalancer.server.port=9090
  36. - traefik.http.routers.{{ service_name }}_http.service={{ service_name }}_web
  37. - traefik.http.routers.{{ service_name }}_http.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  38. - traefik.http.routers.{{ service_name }}_http.entrypoints=web
  39. {% if traefik_tls_enabled %}
  40. - traefik.http.routers.{{ service_name }}_https.service={{ service_name }}_web
  41. - traefik.http.routers.{{ service_name }}_https.rule=Host(`{{ traefik_host }}.{{ traefik_domain }}`)
  42. - traefik.http.routers.{{ service_name }}_https.entrypoints=websecure
  43. - traefik.http.routers.{{ service_name }}_https.tls=true
  44. - traefik.http.routers.{{ service_name }}_https.tls.certresolver={{ traefik_tls_certresolver }}
  45. {% endif %}
  46. {% endif %}
  47. volumes:
  48. {{ service_name }}_data:
  49. driver: local
  50. {% if traefik_enabled %}
  51. networks:
  52. {{ traefik_network }}:
  53. external: true
  54. {% endif %}