version: '3.5' services: # Handle the coordination between the kafka images zookeeper: image: bitnami/zookeeper ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes volumes: - "zookeeper_data:/bitnami" networks: - kafka # The event system kafka: image: bitnami/kafka ports: - "9092:9092" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 volumes: - "kafka_data:/bitnami" networks: - kafka depends_on: - zookeeper # Our producer producer: build: context: ./applications/producer dockerfile: ./src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} environment: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 TEMPERATURE_TOPIC: "temperature-celsius" TEMPERATURE_LOCATION: 49.9, 2.3 networks: - kafka depends_on: - kafka # Our consumer consumer: build: context: ./applications/consumer dockerfile: ./src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} ports: - "8080:8080" environment: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 TEMPERATURE_TOPIC: "temperature-fahrenheit" healthcheck: test: curl --fail http://localhost:8080/v1/ping start_period: 10s timeout: 5s interval: 60s retries: 3 networks: - kafka depends_on: - kafka # Our converter converter: build: context: ./applications/converter dockerfile: ./src/main/docker/Dockerfile.${QUARKUS_MODE:-jvm} environment: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 TEMPERATURE_CELSIUS_TOPIC: "temperature-celsius" TEMPERATURE_FAHRENHEIT_TOPIC: "temperature-fahrenheit" networks: - kafka depends_on: - kafka - producer - consumer networks: # the Kafka network kafka: name: kafka volumes: # the Zookeeper permanent data zookeeper_data: driver: local # the Kafka permanent data kafka_data: driver: local