docker-compose.yml•1.96 kB
version: '3.8'
services:
pocketmcp:
build:
context: .
dockerfile: Dockerfile
image: pocketmcp:latest
container_name: pocketmcp
restart: unless-stopped
ports:
# MCP Server (HTTP transport)
- "${HTTP_PORT:-8001}:8001"
# Web API Server
- "${API_PORT:-5174}:5174"
# Web UI Server
- "${WEB_PORT:-5173}:5173"
volumes:
# Database persistence
- pocketmcp_data:/app/data
# Knowledge base directory
- pocketmcp_kb:/app/kb
# Model cache directory
- pocketmcp_cache:/app/.cache
environment:
# Core settings
- NODE_ENV=${NODE_ENV:-production}
- TRANSPORT=${TRANSPORT:-both}
- HTTP_HOST=${HTTP_HOST:-0.0.0.0}
- HTTP_PORT=${HTTP_PORT:-8001}
- API_PORT=${API_PORT:-5174}
- WEB_PORT=${WEB_PORT:-5173}
- LOG_LEVEL=${LOG_LEVEL:-info}
# Database and storage
- SQLITE_PATH=${SQLITE_PATH:-/app/data/index.db}
- WATCH_DIR=${WATCH_DIR:-/app/kb}
# Embedding model configuration
- MODEL_ID=${MODEL_ID:-Xenova/all-MiniLM-L6-v2}
- HF_CACHE_DIR=${HF_CACHE_DIR:-/app/.cache}
- HF_TOKEN=${HF_TOKEN:-}
# Text processing
- CHUNK_SIZE=${CHUNK_SIZE:-1000}
- CHUNK_OVERLAP=${CHUNK_OVERLAP:-120}
- MAX_CONCURRENT_FILES=${MAX_CONCURRENT_FILES:-5}
# Logging
- VERBOSE_LOGGING=${VERBOSE_LOGGING:-false}
- DEBUG_DOTENV=${DEBUG_DOTENV:-false}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5173/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Resource limits (adjust based on your system)
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
reservations:
memory: 512M
cpus: '0.25'
volumes:
pocketmcp_data:
driver: local
pocketmcp_kb:
driver: local
pocketmcp_cache:
driver: local