version: '3.8' services: ollama: image: ollama/ollama:latest container_name: code-forge-ollama ports: - "11434:11434" volumes: - ./data/ollama:/root/.ollama environment: - OLLAMA_NUM_PARALLEL=2 # Allow 2 parallel requests - OLLAMA_MAX_LOADED_MODELS=2 # Keep both embed and LLM in memory - OLLAMA_KEEP_ALIVE=15m # Keep models loaded longer - OLLAMA_MODELS=/root/.ollama/models - OLLAMA_NUM_THREADS=8 # Use more CPU threads deploy: resources: limits: memory: 16G # Limit to 16GB (plenty for 8B model) reservations: memory: 8G # Reserve 8GB minimum networks: - code-forge-network restart: unless-stopped app: build: context: . dockerfile: Dockerfile container_name: code-forge-app ports: - "8051:8051" # MCP Server volumes: - ./app:/workspace/app - ./mcp_server:/workspace/mcp_server - uploads:/workspace/data/uploads # Uncomment to mount a local directory for bulk import: # - /path/to/your/docs:/workspace/mounted_docs:ro environment: - OLLAMA_HOST=http://ollama:11434 - POSTGRES_HOST=host.docker.internal - POSTGRES_PORT=5432 - POSTGRES_DB=codeforge - POSTGRES_USER=${USER} - POSTGRES_PASSWORD= - DATABASE_URL=postgresql://${USER}@host.docker.internal:5432/codeforge - MCP_SERVER_HOST=0.0.0.0 - MCP_SERVER_PORT=8051 networks: - code-forge-network depends_on: - ollama restart: unless-stopped frontend: image: node:20-alpine container_name: code-forge-frontend working_dir: /app ports: - "5173:5173" # Vite dev server volumes: - ./frontend:/app - /app/node_modules # Prevent node_modules from being overwritten command: sh -c "npm install && npm run dev -- --host 0.0.0.0" environment: - VITE_API_URL=http://localhost:8051 networks: - code-forge-network depends_on: - app restart: unless-stopped networks: code-forge-network: driver: bridge volumes: uploads: