iconsulting/infrastructure/docker/docker-compose.dev.yml

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: