version: '3'

services:
  generator:
    image: golang:1.23.1-alpine
    restart: always
    working_dir: /go/src/app
    volumes:
      - ./generator:/go/src/app
      - ./source_logs:/go/src/source_logs
    command:
      - go
      - run
      - main.go
      - -logsPath=/go/src/source_logs/logs
      - -outputRateLimitItems=10000
      - -outputRateLimitPeriod=1s
      - -syslog.addr=rsyslog:514
      - -syslog.addr2=rsyslog:514
      - -logs.randomSuffix=false
    depends_on: [ rsyslog ]

  loki:
    image: grafana/loki:2.9.0
    user: 0:0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/loki-config.yaml
    volumes:
      - loki:/tmp/loki
      - ./loki/:/etc/loki/

  promtail:
    image: grafana/promtail:2.9.0
    command: -config.file=/etc/promtail/promtail-config.yaml
    volumes:
      - ./loki/:/etc/promtail/
    depends_on:
      - loki
      - vlogs

  rsyslog:
    build:
      dockerfile: Dockerfile
      context: rsyslog
    volumes:
      - ./rsyslog/rsyslog.conf:/etc/rsyslog.conf
    depends_on: [ promtail ]


volumes:
  loki: