create-grafana-plugin 0.2.2

CLI tool to scaffold production-ready Grafana plugin projects
Documentation
# @managed by create-grafana-plugin — do not edit
name: {{ plugin_name }}

services:
  grafana:
    container_name: {{ plugin_name }}-grafana
    image: grafana/grafana:12.4.2
    ports:
      - "{{ 3000 + port_offset }}:3000"
    environment:
      - GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS={{ plugin_id }}
      - GF_PLUGINS_ENABLE_ALPHA=true
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_LOG_LEVEL=debug
    volumes:
      - ./dist/{{ plugin_id }}:/var/lib/grafana/plugins/{{ plugin_id }}
      - ./provisioning:/etc/grafana/provisioning
      - grafana-data:/var/lib/grafana
    networks:
      - {{ plugin_name }}-net
    depends_on:
      - prometheus
      - tempo
      - loki
{%- if has_mock %}

  otel-mock:
    container_name: {{ plugin_name }}-otel-mock
    build:
      context: .
      dockerfile: otel-mock/Dockerfile
    environment:
      OTEL_EXPORTER_OTLP_ENDPOINT: http://tempo:4317
      LOKI_URL: http://loki:3100
      OTEL_MOCK_PROM_ADDR: 0.0.0.0:9464
      OTEL_MOCK_OPENMETRICS_ADDR: 0.0.0.0:9465
      OTEL_MOCK_TICK_MS: "5000"
      RUST_LOG: info
    ports:
      - "{{ 9464 + port_offset }}:9464"
      - "{{ 9465 + port_offset }}:9465"
    networks:
      - {{ plugin_name }}-net
    depends_on:
      - tempo
      - loki
{%- endif %}

  prometheus:
    container_name: {{ plugin_name }}-prometheus
    image: prom/prometheus:v3.10.0
    user: "nobody"
    ports:
      - "{{ 9090 + port_offset }}:9090"
    volumes:
      - ./provisioning/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus
    networks:
      - {{ plugin_name }}-net
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --web.enable-remote-write-receiver
      - --storage.tsdb.path=/prometheus

  tempo:
    container_name: {{ plugin_name }}-tempo
    image: grafana/tempo:2.6.1
    user: root
    ports:
      - "{{ 3200 + port_offset }}:3200"
      - "{{ 4317 + port_offset }}:4317"
    volumes:
      - ./provisioning/tempo/tempo.yml:/etc/tempo/tempo.yml
      - tempo-data:/var/lib/tempo
    networks:
      - {{ plugin_name }}-net
    command:
      - -config.file=/etc/tempo/tempo.yml

  loki:
    container_name: {{ plugin_name }}-loki
    image: grafana/loki:3.7.1
    user: root
    ports:
      - "{{ 3100 + port_offset }}:3100"
    volumes:
      - ./provisioning/loki/config.yml:/etc/loki/local-config.yaml
      - loki-data:/loki
    networks:
      - {{ plugin_name }}-net
    command:
      - -config.file=/etc/loki/local-config.yaml

networks:
  {{ plugin_name }}-net:
    name: {{ plugin_name }}-net
    driver: bridge

volumes:
  grafana-data:
  prometheus-data:
  tempo-data:
  loki-data: