services: server: image: server:latest build: ./src/server ports: - "8000:8086" env_file: - .env depends_on: - postgres - redis - kafka networks: - app bot: image: bot:latest build: ./src/tgbot restart: always env_file: - .env depends_on: - postgres - redis - kafka networks: - app nginx: image: nginx:latest restart: always volumes: - ./nginx.shield.conf:/etc/nginx/nginx.conf ports: - "8081:81" - "8082:82" networks: - app labels: loki: 'true' redis: image: redis:latest restart: always command: [ "redis-server", "--requirepass", "${REDIS_PASSWORD}" ] ports: - "6378:6379" networks: - app labels: loki: 'true' environment: - REDIS_PASSWORD=${REDIS_PASSWORD} postgres: image: postgres:latest restart: always environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} - PGDATA=/var/lib/postgresql/data/pgdata volumes: - pg_data:/var/lib/postgresql/data/pgdata ports: - "5434:5432" networks: - app labels: loki: 'true' prometheus: image: prom/prometheus:latest volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" depends_on: - nginx-exporter networks: - app grafana: image: grafana/grafana:latest ports: - "3000:3000" volumes: - ./grafana/provisioning/dashboards/:/etc/grafana/provisioning/dashboards/ - ./grafana/provisioning/datasources/:/etc/grafana/provisioning/datasources/ - ./grafana/dashboards/:/var/lib/grafana/dashboards/ depends_on: - prometheus - loki networks: - app environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_HOST=${POSTGRES_HOST} nginx-exporter: image: nginx/nginx-prometheus-exporter:latest ports: - "9113:9113" command: > -nginx.scrape-uri http://nginx:82/nginx_status -web.listen-address :9113 -web.telemetry-path /metrics depends_on: - nginx networks: - app loki: image: grafana/loki:2.8.2 ports: - "3100:3100" volumes: - ./loki-config.yaml:/etc/loki/local-config.yaml - ./loki-data:/loki command: -config.file=/etc/loki/local-config.yaml networks: - app user: "root" promtail: image: grafana/promtail:2.8.2 volumes: - /var/log:/var/log - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/run/docker.sock:/var/run/docker.sock - ./promtail-config.yaml:/etc/promtail/promtail.yaml command: -config.file=/etc/promtail/promtail.yaml depends_on: - loki networks: - app minio: image: minio/minio:latest ports: - "9000:9000" - "9001:9001" environment: - MINIO_ROOT_USER=${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} volumes: - ./minio-data:/data command: server /data --console-address ":9001" networks: - app zookeeper: image: wurstmeister/zookeeper:latest restart: always ports: - "2181:2181" networks: - app kafka: image: wurstmeister/kafka:latest restart: always ports: - "9092:9092" environment: - KAFKA_ADVERTISED_LISTENERS=INSIDE://kafka:9092,OUTSIDE://localhost:29092 - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT - KAFKA_LISTENERS=INSIDE://0.0.0.0:9092,OUTSIDE://0.0.0.0:29092 - KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock depends_on: - zookeeper networks: - app akhq: image: tchiotludo/akhq:latest container_name: akhq ports: - "8070:8080" environment: AKHQ_CONFIGURATION: | akhq: connections: kafka: properties: bootstrap.servers: kafka:9092 depends_on: - kafka - zookeeper networks: - app volumes: pg_data: networks: app: driver: bridge