services: kafka: image: apache/kafka:3.9.0 container_name: kafka command: - sh - -c - | CLUSTER_ID=$$(/opt/kafka/bin/kafka-storage.sh random-uuid) /opt/kafka/bin/kafka-storage.sh format --config /opt/kafka/config/kraft/server.properties --cluster-id $$CLUSTER_ID /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties & pid=$! # wait until Kafka is actually alive until /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list >/dev/null 2>&1; do sleep 1 done # create topic /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 \ --create --if-not-exists --topic rawbeacons \ --partitions 1 --replication-factor 1 # mark ready touch /tmp/ready wait $pid healthcheck: test: ["CMD-SHELL", "[ -f /tmp/ready ]"] interval: 3s timeout: 2s retries: 20 ports: - "127.0.0.1:9092:9092" # presense-decoder: # build: # context: ../ # dockerfile: build/package/Dockerfile.decoder # image: presense-decoder # container_name: presense-decoder # environment: # - REDIS_URL=valkey:6379 # - KAFKA_URL=kafka:9092 # depends_on: # kafka: # condition: service_healthy # restart: always # presense-server: # build: # context: ../ # dockerfile: build/package/Dockerfile.server # image: presense-server # container_name: presense-server # environment: # - REDIS_URL=valkey:6379 # - KAFKA_URL=kafka:9092 # depends_on: # kafka: # condition: service_healthy # ports: # - "127.0.0.1:1902:1902" # restart: always # presense-bridge: # build: # context: ../ # dockerfile: build/package/Dockerfile.bridge # image: presense-bridge # container_name: presense-bridge # environment: # - KAFKA_URL=kafka:9092 # - MQTT_HOST=192.168.1.101:1883 # - MQTT_USERNAME=user # - MQTT_PASSWORD=pass # depends_on: # kafka: # condition: service_healthy # restart: always