Spaces:
Sleeping
Sleeping
| services: | |
| kafka: | |
| image: bitnami/kafka:latest | |
| container_name: kafka | |
| environment: | |
| - KAFKA_CFG_PROCESS_ROLES=broker,controller | |
| - KAFKA_CFG_NODE_ID=1 | |
| - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT | |
| - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 | |
| - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 | |
| - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 | |
| - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER | |
| - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true | |
| ports: | |
| - "9092:9092" | |
| healthcheck: | |
| test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 5 | |
| start_period: 60s | |
| networks: | |
| - kafka-network | |
| sentiment-producer: | |
| container_name: sentiment-producer | |
| build: . | |
| depends_on: | |
| kafka: | |
| condition: service_healthy | |
| command: ["python", "mock_tweet_producer.py"] | |
| restart: on-failure | |
| networks: | |
| - kafka-network | |
| spark: | |
| image: bitnami/spark:3.4 | |
| container_name: spark | |
| environment: | |
| - SPARK_MODE=master | |
| - SPARK_RPC_AUTHENTICATION_ENABLED=no | |
| - SPARK_RPC_ENCRYPTION_ENABLED=no | |
| - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no | |
| - SPARK_SSL_ENABLED=no | |
| ports: | |
| - "4040:4040" | |
| - "7077:7077" | |
| depends_on: | |
| kafka: | |
| condition: service_healthy | |
| networks: | |
| - kafka-network | |
| spark-worker: | |
| image: bitnami/spark:3.4 | |
| container_name: spark-worker | |
| environment: | |
| - SPARK_MODE=worker | |
| - SPARK_MASTER_URL=spark://spark:7077 | |
| - SPARK_RPC_AUTHENTICATION_ENABLED=no | |
| - SPARK_RPC_ENCRYPTION_ENABLED=no | |
| - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no | |
| - SPARK_SSL_ENABLED=no | |
| depends_on: | |
| - spark | |
| networks: | |
| - kafka-network | |
| sentiment-consumer: | |
| image: bitnami/spark:3.4 | |
| container_name: sentiment-consumer | |
| depends_on: | |
| kafka: | |
| condition: service_healthy | |
| spark: | |
| condition: service_started | |
| spark-worker: | |
| condition: service_started | |
| command: ["spark-submit", "--master", "spark://spark:7077", "--packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4.0", "/app/consumer.py"] | |
| volumes: | |
| - .:/app | |
| restart: on-failure | |
| networks: | |
| - kafka-network | |
| dashboard: | |
| container_name: dashboard | |
| build: . | |
| depends_on: | |
| kafka: | |
| condition: service_healthy | |
| command: ["python", "dashboard.py"] | |
| ports: | |
| - "5000:5000" | |
| restart: on-failure | |
| networks: | |
| - kafka-network | |
| networks: | |
| kafka-network: | |
| driver: bridge |