services: # --- PostgreSQL (pgvector) --- postgres: image: pgvector/pgvector:pg17 container_name: rag-postgres restart: unless-stopped environment: POSTGRES_DB: rag POSTGRES_USER: rag POSTGRES_PASSWORD: rag123 ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data - ./docker/initdb:/docker-entrypoint-initdb.d networks: - rag-network healthcheck: test: ["CMD-SHELL", "pg_isready -U rag -d rag"] interval: 5s timeout: 5s retries: 5 # --- Redis --- redis: image: redis:7-alpine container_name: rag-redis restart: unless-stopped ports: - "6379:6379" volumes: - redisdata:/data networks: - rag-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 5 # --- RabbitMQ --- rabbitmq: image: rabbitmq:3-management container_name: rag-rabbitmq restart: unless-stopped environment: RABBITMQ_DEFAULT_USER: rag RABBITMQ_DEFAULT_PASS: rag123 ports: - "5672:5672" - "15672:15672" volumes: - rabbitdata:/var/lib/rabbitmq networks: - rag-network healthcheck: test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"] interval: 10s timeout: 10s retries: 5 # --- MongoDB (im-system) --- mongo: image: mongo:7 container_name: rag-mongo restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: mongo MONGO_INITDB_ROOT_PASSWORD: mongo123 ports: - "27017:27017" volumes: - mongodata:/data/db networks: - rag-network healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 5s timeout: 5s retries: 5 # --- RustFS (S3 compatible, file-system) --- rustfs: image: rustfs/rustfs:latest container_name: rag-rustfs restart: unless-stopped environment: RUSTFS_ROOT_USER: minioadmin RUSTFS_ROOT_PASSWORD: minioadmin command: server /data --console-address ":9001" ports: - "9000:9000" - "9001:9001" volumes: - rustfsdata:/data networks: - rag-network healthcheck: test: ["CMD", "sh", "-c", "nc -z localhost 9000"] interval: 5s timeout: 5s retries: 5 start_period: 10s volumes: pgdata: redisdata: rabbitdata: mongodata: rustfsdata: networks: rag-network: driver: bridge