| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- version: '3.8'
-
- services:
- # Zookeeper - Kafka依赖
- zookeeper:
- image: confluentinc/cp-zookeeper:7.4.0
- container_name: etl-zookeeper
- environment:
- ZOOKEEPER_CLIENT_PORT: 2181
- ZOOKEEPER_TICK_TIME: 2000
- ports:
- - "2181:2181"
- volumes:
- - zookeeper-data:/var/lib/zookeeper/data
- - zookeeper-log:/var/lib/zookeeper/log
- networks:
- - etl-network
-
- # Kafka - 消息队列
- kafka:
- image: confluentinc/cp-kafka:7.4.0
- container_name: etl-kafka
- depends_on:
- - zookeeper
- ports:
- - "9092:9092"
- - "29092:29092"
- environment:
- KAFKA_BROKER_ID: 1
- KAFKA_ZOOKEEPER_CONNECT: etl-zookeeper:2181
- KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://etl-kafka:9092,PLAINTEXT_HOST://localhost:29092
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
- KAFKA_AUTO_CREATE_TOPICS_ENABLE: true
- KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
- volumes:
- - kafka-data:/var/lib/kafka/data
- networks:
- - etl-network
-
- # MySQL - 数据库
- mysql:
- image: mysql:8.0.33
- container_name: etl-mysql
- environment:
- MYSQL_ROOT_PASSWORD: water123
- MYSQL_DATABASE: water_etl
- MYSQL_USER: etl_user
- MYSQL_PASSWORD: etl_password
- ports:
- - "3306:3306"
- volumes:
- - mysql-data:/var/lib/mysql
- - ./src/main/resources/schema.sql:/docker-entrypoint-initdb.d/schema.sql
- networks:
- - etl-network
- command: --default-authentication-plugin=mysql_native_password
-
- # Redis - 缓存
- redis:
- image: redis:7-alpine
- container_name: etl-redis
- ports:
- - "6379:6379"
- volumes:
- - redis-data:/data
- networks:
- - etl-network
-
- # ETL应用
- etl-app:
- build: .
- container_name: etl-application
- depends_on:
- - mysql
- - kafka
- - redis
- ports:
- - "8080:8080"
- environment:
- SPRING_PROFILES_ACTIVE: docker
- SPRING_DATASOURCE_URL: jdbc:mysql://etl-mysql:3306/water_etl?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
- SPRING_DATASOURCE_USERNAME: etl_user
- SPRING_DATASOURCE_PASSWORD: etl_password
- SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
- KAFKA_BOOTSTRAP_SERVERS: etl-kafka:9092
- volumes:
- - ./logs:/app/logs
- - ./run_etl.sh:/app/run_etl.sh
- working_dir: /app
- networks:
- - etl-network
- entrypoint: ["/app/run_etl.sh", "start"]
-
- volumes:
- zookeeper-data:
- zookeeper-log:
- kafka-data:
- mysql-data:
- redis-data:
-
- networks:
- etl-network:
- driver: bridge
|