version: '3.8' services: postgres: image: postgres:15 container_name: postgres environment: POSTGRES_USER: sientia POSTGRES_PASSWORD: sientia POSTGRES_DB: sientia ports: - "5432:5432" volumes: - ./postgres_data:/var/lib/postgresql/data networks: - sientia-network couchbase: image: couchbase/server:7.2.0 container_name: couchbase ports: - "8091:8091" # Admin UI and REST API - "8092:8092" # Query Service (N1QL) - "8093:8093" # Index Service - "8094:8094" # Search Service - "11210:11210" # Data Service (KV) - "18091:18091" # Analytics Service (if enabled) environment: CB_CLUSTER_USERNAME: sientia CB_CLUSTER_PASSWORD: sientia CB_CLUSTER_RAMSIZE: 256 CB_CLUSTER_INDEX_RAMSIZE: 256 volumes: - ./couchbase_data:/opt/couchbase/var networks: - sientia-network healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:8091/pools/default || exit 1"] interval: 10s timeout: 10s retries: 5 redis: image: redis:7-alpine # Using a lightweight Redis image container_name: redis ports: - "6379:6379" volumes: - ./redis_data:/data # Persist Redis data networks: - sientia-network redis-commander: image: rediscommander/redis-commander:latest container_name: redis-commander environment: REDIS_HOSTS: local:redis:6379 # Connects to the 'redis' service within the Docker network ports: - "8081:8081" # Access the Redis Commander UI on this port depends_on: - redis # Ensures Redis starts before Redis Commander networks: - sientia-network networks: sientia-network: driver: bridge volumes: postgres_data: driver: local couchbase_data: driver: local redis_data: driver: local