services: db: image: postgres:18 container_name: db restart: always env_file: - ./env/db.env healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 start_period: 30s volumes: - pgdata:/var/postgresql/data kafdrop: image: obsidiandynamics/kafdrop restart: unless-stopped ports: - "127.0.0.1:9000:9000" env_file: - ./env/kafdrop.env depends_on: - "kafka" kafka: image: apache/kafka:3.9.0 restart: unless-stopped ports: - "127.0.0.1:9092:9092" - "127.0.0.1:9093:9093" env_file: - ./env/kafka.env healthcheck: test: ["CMD-SHELL", "/opt/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"] interval: 10s timeout: 5s retries: 10 start_period: 20s volumes: - kafkadata:/var/lib/kafka/data kafka-init: image: apache/kafka:3.9.0 command: [ "sh", "-c", "ls -l /tmp/create_topic.sh && /tmp/create_topic.sh" ] depends_on: kafka: condition: service_healthy volumes: - ./init-scripts/create_topic.sh:/tmp/create_topic.sh env_file: - ./env/kafka-init.env presense-decoder: image: presense-decoder container_name: presense-decoder env_file: - ./env/presense-decoder.env environment: LOG_LEVEL: "info" depends_on: kafka-init: condition: service_completed_successfully db: condition: service_healthy restart: always logging: driver: "json-file" options: max-size: "10m" max-file: "3" presense-server: image: presense-server container_name: presense-server env_file: - ./env/presense-server.env environment: LOG_LEVEL: "info" ports: - "127.0.0.1:1902:1902" depends_on: kafka-init: condition: service_completed_successfully db: condition: service_healthy restart: always logging: driver: "json-file" options: max-size: "10m" max-file: "3" presense-bridge: image: presense-bridge container_name: presense-bridge env_file: - ./env/presense-bridge.env environment: LOG_LEVEL: "info" depends_on: kafka-init: condition: service_completed_successfully db: condition: service_healthy restart: always logging: driver: "json-file" options: max-size: "10m" max-file: "3" presense-location: image: presense-location container_name: presense-location env_file: - ./env/presense-location.env environment: LOG_LEVEL: "info" depends_on: kafka-init: condition: service_completed_successfully db: condition: service_healthy restart: always logging: driver: "json-file" options: max-size: "10m" max-file: "3" volumes: pgdata: kafkadata: