docker-compose.yml•1.75 kB
services:
# Initialize database if it doesn't exist
kuzu-init:
image: ghcr.io/jordanburke/kuzudb-mcp-server:latest
volumes:
- kuzu-data:/database
environment:
- KUZU_MCP_DATABASE_PATH=/database/kuzu.db
command: |
sh -c "
if [ ! -f /database/kuzu.db ] || [ ! -d /database/kuzu.db ]; then
echo '📦 Initializing new Kuzu database...'
node dist/index.js --init /database/kuzu.db --template movies
echo '✅ Database initialized successfully!'
else
echo '✓ Database already exists, skipping initialization'
fi
"
kuzu-mcp-http:
image: ghcr.io/jordanburke/kuzudb-mcp-server:latest
ports:
- "3000:3000" # MCP server
- "3001:3001" # Web UI
volumes:
- kuzu-data:/database
- ./backups:/backups # Optional: for storing backups
environment:
- KUZU_MCP_DATABASE_PATH=/database/kuzu.db
- KUZU_READ_ONLY=false
- PORT=3000
# Web UI configuration (enabled by default, set to false to disable)
# - KUZU_WEB_UI_ENABLED=false
- KUZU_WEB_UI_PORT=3001
# Optional: Enable authentication (uncomment and change password)
# - KUZU_WEB_UI_AUTH_USER=admin
# - KUZU_WEB_UI_AUTH_PASSWORD=changeme
restart: unless-stopped
# command: ["node", "dist/index.js", "--transport", "http", "--port", "8080", "--endpoint", "/kuzu"]
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:3000/health').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"]
interval: 30s
timeout: 3s
retries: 3
start_period: 10s
depends_on:
kuzu-init:
condition: service_completed_successfully
volumes:
kuzu-data: