version: "3.9" services: clickhouse: image: clickhouse/clickhouse-server container_name: clickhouse hostname: clickhouse ports: - "8123:8123" - "9000:9000" volumes: - "ch_data:/var/lib/clickhouse" ulimits: nofile: soft: 262144 hard: 262144 environment: CLICKHOUSE_USER: click CLICKHOUSE_PASSWORD: click zookeeper: image: confluentinc/cp-zookeeper:latest environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 healthcheck: test: echo srvr | nc zookeeper 2181 || exit 1 start_period: 10s retries: 20 interval: 10s kafka: image: confluentinc/cp-kafka:7.8.0 depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181" KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false" KAFKA_JMX_PORT: 9101 KAFKA_JMX_HOSTNAME: localhost healthcheck: test: ["CMD", "kafka-topics", "--bootstrap-server", "localhost:9092", "--list"] interval: 5s timeout: 10s retries: 10 kafka-setup: image: confluentinc/cp-kafka:7.3.0 depends_on: kafka: condition: service_healthy restart: on-failure entrypoint: ["/bin/bash", "-c"] command: | " echo 'Ожидание готовности Kafka...' while ! kafka-topics --bootstrap-server kafka:29092 --list; do sleep 1 done echo 'Создание топиков...' kafka-topics --bootstrap-server kafka:29092 --create --if-not-exists --topic fraud_train --partitions 3 --replication-factor 1 --config retention.ms=604800000 echo 'Топики успешно созданы:' kafka-topics --bootstrap-server kafka:29092 --list " akhq: image: tchiotludo/akhq restart: unless-stopped ports: - "8080:8080" environment: AKHQ_CONFIGURATION: | akhq: connections: docker-kafka-server: properties: bootstrap.servers: "kafka:29092" kafka-loader: build: . depends_on: kafka-setup: condition: service_completed_successfully environment: KAFKA_BOOTSTRAP_SERVERS: "kafka:29092" KAFKA_FRAUD_TRAIN_TOPIC: "fraud_train" CSV_PATH: "/app/train.csv" CHUNK_SIZE: 1000 volumes: - ./train.csv:/app/train.csv:ro command: ["python", "load_kafka.py"] restart: "no" fraud-query: build: . depends_on: clickhouse: condition: service_started environment: CLICKHOUSE_HOST: "clickhouse" CLICKHOUSE_PORT: "9000" CLICKHOUSE_USER: "click" CLICKHOUSE_PASSWORD: "click" CLICKHOUSE_DB: "fraud" OUTPUT_PATH: "/results/result.csv" volumes: - ./results:/results command: ["python", "run_query.py"] restart: "no" volumes: ch_data: