135 lines
3.4 KiB
YAML
135 lines
3.4 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# PostgreSQL with pgvector extension
|
|
postgres:
|
|
image: pgvector/pgvector:pg15
|
|
container_name: iconsulting-postgres
|
|
environment:
|
|
POSTGRES_USER: iconsulting
|
|
POSTGRES_PASSWORD: dev_password_123
|
|
POSTGRES_DB: iconsulting
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./services/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U iconsulting"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
# Neo4j Graph Database
|
|
neo4j:
|
|
image: neo4j:5
|
|
container_name: iconsulting-neo4j
|
|
environment:
|
|
NEO4J_AUTH: neo4j/dev_password_123
|
|
NEO4J_PLUGINS: '["apoc"]'
|
|
NEO4J_dbms_security_procedures_unrestricted: apoc.*
|
|
ports:
|
|
- "7474:7474" # HTTP
|
|
- "7687:7687" # Bolt
|
|
volumes:
|
|
- neo4j_data:/data
|
|
- neo4j_logs:/logs
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7474 || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 5
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
# Redis Cache
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: iconsulting-redis
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
command: redis-server --appendonly yes
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
# Zookeeper for Kafka
|
|
zookeeper:
|
|
image: confluentinc/cp-zookeeper:7.4.0
|
|
container_name: iconsulting-zookeeper
|
|
environment:
|
|
ZOOKEEPER_CLIENT_PORT: 2181
|
|
ZOOKEEPER_TICK_TIME: 2000
|
|
ports:
|
|
- "2181:2181"
|
|
volumes:
|
|
- zookeeper_data:/var/lib/zookeeper/data
|
|
- zookeeper_logs:/var/lib/zookeeper/log
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
# Kafka Message Broker
|
|
kafka:
|
|
image: confluentinc/cp-kafka:7.4.0
|
|
container_name: iconsulting-kafka
|
|
depends_on:
|
|
- zookeeper
|
|
ports:
|
|
- "9092:9092"
|
|
- "29092:29092"
|
|
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: 'true'
|
|
volumes:
|
|
- kafka_data:/var/lib/kafka/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "kafka-broker-api-versions --bootstrap-server localhost:9092"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
# Kafka UI (optional, for debugging)
|
|
kafka-ui:
|
|
image: provectuslabs/kafka-ui:latest
|
|
container_name: iconsulting-kafka-ui
|
|
depends_on:
|
|
- kafka
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
KAFKA_CLUSTERS_0_NAME: iconsulting
|
|
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
|
|
KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181
|
|
networks:
|
|
- iconsulting-network
|
|
|
|
networks:
|
|
iconsulting-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
postgres_data:
|
|
neo4j_data:
|
|
neo4j_logs:
|
|
redis_data:
|
|
zookeeper_data:
|
|
zookeeper_logs:
|
|
kafka_data:
|