From 6c150eed6db71bb2d461bcb254281fcf4c1f1557 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 23 Sep 2025 18:40:19 -0300 Subject: [PATCH] chore(docker): add Kafka and frontend services to Docker configurations - Introduced Kafka and Zookeeper services in a new docker-compose file for better message handling. - Added frontend service to both development and production docker-compose files for improved UI management. - Updated evolution-manager-v2 submodule to the latest commit. - Updated CHANGELOG for version 2.3.5 release. --- CHANGELOG.md | 4 + Docker/kafka/README.md | 139 +++++++++++++++++++++++++++++ Docker/kafka/docker-compose.yaml | 51 +++++++++++ Docker/swarm/evolution_api_v2.yaml | 2 +- docker-compose.dev.yaml | 10 +++ docker-compose.yaml | 9 ++ evolution-manager-v2 | 2 +- 7 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 Docker/kafka/README.md create mode 100644 Docker/kafka/docker-compose.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e3b92f9..d1ada766 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.3.5 (develop) + +### + # 2.3.4 (2025-09-23) ### Features diff --git a/Docker/kafka/README.md b/Docker/kafka/README.md new file mode 100644 index 00000000..6c17ab41 --- /dev/null +++ b/Docker/kafka/README.md @@ -0,0 +1,139 @@ +# Kafka Docker Setup for Evolution API + +This directory contains the Docker Compose configuration for running Apache Kafka locally for development and testing with Evolution API. + +## Services + +### Zookeeper +- **Container**: `zookeeper` +- **Image**: `confluentinc/cp-zookeeper:7.5.0` +- **Port**: `2181` +- **Purpose**: Coordination service for Kafka cluster + +### Kafka +- **Container**: `kafka` +- **Image**: `confluentinc/cp-kafka:7.5.0` +- **Ports**: + - `9092` - PLAINTEXT_HOST (localhost access) + - `29092` - PLAINTEXT (internal container access) + - `9094` - OUTSIDE (external Docker access) +- **Purpose**: Message broker for event streaming + +## Quick Start + +### 1. Start Kafka Services +```bash +cd Docker/kafka +docker-compose up -d +``` + +### 2. Verify Services +```bash +# Check if containers are running +docker-compose ps + +# Check Kafka logs +docker-compose logs kafka + +# Check Zookeeper logs +docker-compose logs zookeeper +``` + +### 3. Test Kafka Connection +```bash +# Create a test topic +docker exec kafka kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 + +# List topics +docker exec kafka kafka-topics --list --bootstrap-server localhost:9092 + +# Produce messages +docker exec -it kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092 + +# Consume messages (in another terminal) +docker exec -it kafka kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092 +``` + +## Evolution API Integration + +### Environment Variables +Configure these variables in your Evolution API `.env` file: + +```bash +# Kafka Configuration +KAFKA_ENABLED=true +KAFKA_CLIENT_ID=evolution-api +KAFKA_BROKERS=localhost:9092 +KAFKA_GLOBAL_ENABLED=true +KAFKA_CONSUMER_GROUP_ID=evolution-api-consumers +KAFKA_TOPIC_PREFIX=evolution +KAFKA_AUTO_CREATE_TOPICS=true + +# Event Configuration +KAFKA_EVENTS_APPLICATION_STARTUP=true +KAFKA_EVENTS_INSTANCE_CREATE=true +KAFKA_EVENTS_MESSAGES_UPSERT=true +# ... other events as needed +``` + +### Connection Endpoints +- **From Evolution API**: `localhost:9092` +- **From other Docker containers**: `kafka:29092` +- **From external applications**: `host.docker.internal:9094` + +## Data Persistence + +Data is persisted in Docker volumes: +- `zookeeper_data`: Zookeeper data and logs +- `kafka_data`: Kafka topic data and logs + +## Network + +Services run on the `evolution-net` network, allowing integration with other Evolution API services. + +## Stopping Services + +```bash +# Stop services +docker-compose down + +# Stop and remove volumes (WARNING: This will delete all data) +docker-compose down -v +``` + +## Troubleshooting + +### Connection Issues +1. Ensure ports 2181, 9092, 29092, and 9094 are not in use +2. Check if Docker network `evolution-net` exists +3. Verify firewall settings allow connections to these ports + +### Performance Tuning +The configuration includes production-ready settings: +- Log retention: 7 days (168 hours) +- Compression: gzip +- Auto-topic creation enabled +- Optimized segment and retention settings + +### Logs +```bash +# View all logs +docker-compose logs + +# Follow logs in real-time +docker-compose logs -f + +# View specific service logs +docker-compose logs kafka +docker-compose logs zookeeper +``` + +## Integration with Evolution API + +Once Kafka is running, Evolution API will automatically: +1. Connect to Kafka on startup (if `KAFKA_ENABLED=true`) +2. Create topics based on `KAFKA_TOPIC_PREFIX` +3. Start producing events to configured topics +4. Handle consumer groups for reliable message processing + +For more details on Kafka integration, see the main Evolution API documentation. diff --git a/Docker/kafka/docker-compose.yaml b/Docker/kafka/docker-compose.yaml new file mode 100644 index 00000000..dc1c794e --- /dev/null +++ b/Docker/kafka/docker-compose.yaml @@ -0,0 +1,51 @@ +version: '3.3' + +services: + zookeeper: + container_name: zookeeper + image: confluentinc/cp-zookeeper:7.5.0 + environment: + - ZOOKEEPER_CLIENT_PORT=2181 + - ZOOKEEPER_TICK_TIME=2000 + - ZOOKEEPER_SYNC_LIMIT=2 + volumes: + - zookeeper_data:/var/lib/zookeeper/ + ports: + - 2181:2181 + + kafka: + container_name: kafka + image: confluentinc/cp-kafka:7.5.0 + depends_on: + - zookeeper + environment: + - KAFKA_BROKER_ID=1 + - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 + - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,OUTSIDE:PLAINTEXT + - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092,OUTSIDE://host.docker.internal:9094 + - KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT + - 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=true + - KAFKA_LOG_RETENTION_HOURS=168 + - KAFKA_LOG_SEGMENT_BYTES=1073741824 + - KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS=300000 + - KAFKA_COMPRESSION_TYPE=gzip + ports: + - 29092:29092 + - 9092:9092 + - 9094:9094 + volumes: + - kafka_data:/var/lib/kafka/data + +volumes: + zookeeper_data: + kafka_data: + + +networks: + evolution-net: + name: evolution-net + driver: bridge \ No newline at end of file diff --git a/Docker/swarm/evolution_api_v2.yaml b/Docker/swarm/evolution_api_v2.yaml index 4055dfa3..f28163cc 100644 --- a/Docker/swarm/evolution_api_v2.yaml +++ b/Docker/swarm/evolution_api_v2.yaml @@ -2,7 +2,7 @@ version: "3.7" services: evolution_v2: - image: evoapicloud/evolution-api:v2.3.1 + image: evoapicloud/evolution-api:v2.3.5 volumes: - evolution_instances:/evolution/instances networks: diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml index 2ca3424e..35868ab7 100644 --- a/docker-compose.dev.yaml +++ b/docker-compose.dev.yaml @@ -15,6 +15,16 @@ services: expose: - 8080 + frontend: + container_name: evolution_frontend + image: evolution/manager:local + build: ./evolution-manager-v2 + restart: always + ports: + - "3000:80" + networks: + - evolution-net + volumes: evolution_instances: diff --git a/docker-compose.yaml b/docker-compose.yaml index b049f00f..e0edee65 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -20,6 +20,15 @@ services: expose: - "8080" + frontend: + container_name: evolution_frontend + image: evoapicloud/evolution-manager:latest + restart: always + ports: + - "3000:80" + networks: + - evolution-net + redis: container_name: evolution_redis image: redis:latest diff --git a/evolution-manager-v2 b/evolution-manager-v2 index fcb38dd4..e510b5f1 160000 --- a/evolution-manager-v2 +++ b/evolution-manager-v2 @@ -1 +1 @@ -Subproject commit fcb38dd407b89697b7a7154cfd873f76729e6ece +Subproject commit e510b5f17fc75cbddeaaba102ddd568e4b127455