version: '3.8' services: # ============================================ # keep-notes - Next.js Web Application # ============================================ keep-notes: build: context: ./keep-notes dockerfile: Dockerfile container_name: memento-web ports: - "3000:3000" environment: - DATABASE_URL=file:/app/prisma/dev.db - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-changethisinproduction} - NEXTAUTH_URL=${NEXTAUTH_URL:-http://localhost:3000} - NODE_ENV=production # Email Configuration (SMTP) - SMTP_HOST=${SMTP_HOST} - SMTP_PORT=${SMTP_PORT:-587} - SMTP_USER=${SMTP_USER} - SMTP_PASS=${SMTP_PASS} - SMTP_FROM=${SMTP_FROM:-noreply@memento.app} # AI Providers - OPENAI_API_KEY=${OPENAI_API_KEY} - OLLAMA_API_URL=${OLLAMA_API_URL:-http://ollama:11434} volumes: - db-data:/app/prisma - uploads-data:/app/public/uploads restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - memento-network # ============================================ # mcp-server - MCP Protocol Server # ============================================ mcp-server: build: context: ./mcp-server dockerfile: Dockerfile container_name: memento-mcp volumes: - db-data:/app/db depends_on: - keep-notes restart: unless-stopped networks: - memento-network # ============================================ # Ollama - Local LLM Provider (Optional) # ============================================ ollama: image: ollama/ollama:latest container_name: memento-ollama ports: - "11434:11434" volumes: - ollama-data:/root/.ollama restart: unless-stopped networks: - memento-network # ============================================ # Volumes - Data Persistence # ============================================ volumes: db-data: driver: local uploads-data: driver: local ollama-data: driver: local # ============================================ # Networks - Service Communication # ============================================ networks: memento-network: driver: bridge