version: "3.8" services: zookeeper: image: confluentinc/cp-zookeeper:7.5.0 env_file: - .env environment: ZOOKEEPER_CLIENT_PORT: 2181 ports: - "2181:2181" kafka: image: confluentinc/cp-kafka:7.5.0 env_file: - .env depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,HOST://0.0.0.0:9092 KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,HOST://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 healthcheck: test: ["CMD", "kafka-topics", "--bootstrap-server", "kafka:29092", "--list"] interval: 10s timeout: 5s retries: 10 worker-ingestion: build: context: ./workers/ingestion dockerfile: ../../docker/go-worker.Dockerfile env_file: - .env depends_on: kafka: condition: service_healthy worker-analyzer: build: context: ./workers/analyzer dockerfile: ../../docker/node-worker.Dockerfile env_file: - .env volumes: - ./vertex.json:/workers/analyzer/vertex.json:ro depends_on: kafka: condition: service_healthy worker-sentinelbot: build: context: ./workers/sentinelBot dockerfile: ../../docker/go-worker.Dockerfile env_file: - .env depends_on: kafka: condition: service_healthy worker-elevenlab: build: context: ./workers/elevenlab dockerfile: ../../docker/go-worker.Dockerfile env_file: - .env depends_on: kafka: condition: service_healthy dashboard: build: context: ./dashboard dockerfile: ../docker/nextjs.Dockerfile env_file: - ./dashboard/.env ports: - "3000:3000" depends_on: kafka: condition: service_healthy