Skip to main content
Glama
DOCKER.md8.34 kB
# Docker Usage Guide Complete guide for running the Shopify Liquid MCP Server with Docker. ## Quick Start ```bash # Pull the image docker pull florinel-chis/shopify-liquid-mcp:latest # Run the server docker run -it --rm florinel-chis/shopify-liquid-mcp:latest # Or build locally docker build -t shopify-liquid-mcp . docker run -it --rm shopify-liquid-mcp ``` ## Why Docker? ✅ **Consistent Environment** - Same setup everywhere ✅ **No Python Setup** - No need to manage Python versions ✅ **Isolated** - Doesn't interfere with system Python ✅ **Portable** - Easy to share with team ✅ **Production Ready** - Deploy anywhere Docker runs ## Building the Image ### From Source ```bash # Clone repository git clone https://github.com/florinel-chis/shopify-liquid-mcp.git cd shopify-liquid-mcp # Build image docker build -t shopify-liquid-mcp:latest . # Build with custom tag docker build -t shopify-liquid-mcp:v0.1.0 . # Build with build args docker build \ --build-arg PYTHON_VERSION=3.11 \ -t shopify-liquid-mcp:python311 \ . ``` ### Multi-Platform Build ```bash # For ARM64 and AMD64 docker buildx build \ --platform linux/amd64,linux/arm64 \ -t shopify-liquid-mcp:latest \ --push \ . ``` ## Running the Container ### Basic Usage ```bash # Interactive mode docker run -it shopify-liquid-mcp # Detached mode docker run -d --name shopify-liquid-mcp shopify-liquid-mcp # View logs docker logs -f shopify-liquid-mcp # Stop container docker stop shopify-liquid-mcp ``` ### With Persistent Data ```bash # Create named volume docker volume create mcp-data # Run with volume docker run -it --rm \ -v mcp-data:/data \ shopify-liquid-mcp # Run with bind mount docker run -it --rm \ -v $(pwd)/data:/data \ shopify-liquid-mcp ``` ### Custom Configuration ```bash # Custom database path docker run -it --rm \ -e SHOPIFY_LIQUID_DB_PATH=/data/custom.db \ -v mcp-data:/data \ shopify-liquid-mcp # Multiple environment variables docker run -it --rm \ -e SHOPIFY_LIQUID_DB_PATH=/data/mcp.db \ -e LOG_LEVEL=DEBUG \ -v mcp-data:/data \ shopify-liquid-mcp ``` ### Adding Custom Documentation ```bash # Create custom docs directory mkdir custom-docs echo "# My Custom Snippet" > custom-docs/my-snippet.md # Run with custom docs docker run -it --rm \ -v $(pwd)/custom-docs:/docs/custom:ro \ -v mcp-data:/data \ shopify-liquid-mcp ``` ## Docker Compose ### Basic Setup `docker-compose.yml`: ```yaml version: '3.8' services: shopify-liquid-mcp: image: shopify-liquid-mcp:latest container_name: shopify-liquid-mcp volumes: - mcp-data:/data environment: - SHOPIFY_LIQUID_DB_PATH=/data/shopify-liquid.db stdin_open: true tty: true restart: unless-stopped volumes: mcp-data: ``` ### With Custom Docs ```yaml version: '3.8' services: shopify-liquid-mcp: image: shopify-liquid-mcp:latest volumes: - mcp-data:/data - ./custom-docs:/docs/custom:ro environment: - SHOPIFY_LIQUID_DB_PATH=/data/shopify-liquid.db volumes: mcp-data: ``` ### Development Setup ```yaml version: '3.8' services: shopify-liquid-mcp: build: context: . dockerfile: Dockerfile volumes: - ./shopify_liquid_mcp:/app/shopify_liquid_mcp - mcp-data:/data environment: - SHOPIFY_LIQUID_DB_PATH=/data/dev.db - LOG_LEVEL=DEBUG command: python -m shopify_liquid_mcp.server volumes: mcp-data: ``` ### Commands ```bash # Start services docker-compose up -d # View logs docker-compose logs -f # Stop services docker-compose down # Rebuild docker-compose build # Exec into container docker-compose exec shopify-liquid-mcp bash # Restart docker-compose restart ``` ## Integration with Editors ### VS Code `.vscode/settings.json`: ```json { "mcp.servers": { "shopify-liquid": { "type": "docker", "image": "shopify-liquid-mcp:latest", "volumes": { "mcp-data": "/data" } } } } ``` ### Claude Desktop `claude_desktop_config.json`: ```json { "mcpServers": { "shopify-liquid": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "mcp-data:/data", "shopify-liquid-mcp:latest" ] } } } ``` ### Cursor Cursor MCP settings: ```json { "mcpServers": { "shopify-liquid": { "command": "docker", "args": ["run", "-i", "--rm", "shopify-liquid-mcp:latest"] } } } ``` ## Management ### Inspect Container ```bash # Container details docker inspect shopify-liquid-mcp # Container stats docker stats shopify-liquid-mcp # Container processes docker top shopify-liquid-mcp ``` ### Health Checks ```bash # Check health docker inspect --format='{{.State.Health.Status}}' shopify-liquid-mcp # View health logs docker inspect --format='{{json .State.Health}}' shopify-liquid-mcp | jq ``` ### Database Management ```bash # Backup database docker run --rm \ -v mcp-data:/data \ -v $(pwd):/backup \ alpine \ cp /data/shopify-liquid.db /backup/backup.db # Restore database docker run --rm \ -v mcp-data:/data \ -v $(pwd):/backup \ alpine \ cp /backup/backup.db /data/shopify-liquid.db # Access database docker run -it --rm \ -v mcp-data:/data \ alpine \ sqlite3 /data/shopify-liquid.db ``` ## Optimization ### Image Size ```bash # Check image size docker images shopify-liquid-mcp # Use slim base FROM python:3.10-slim # Multi-stage build FROM python:3.10 as builder # ... build steps FROM python:3.10-slim COPY --from=builder /app /app ``` ### Performance ```bash # Allocate more resources docker run -it --rm \ --memory="512m" \ --cpus="1.0" \ shopify-liquid-mcp # Use tmpfs for database (faster, not persistent) docker run -it --rm \ --tmpfs /data:rw,size=100m \ shopify-liquid-mcp ``` ## Troubleshooting ### Container Won't Start ```bash # Check logs docker logs shopify-liquid-mcp # Run with debug docker run -it --rm \ -e LOG_LEVEL=DEBUG \ shopify-liquid-mcp # Interactive shell docker run -it --rm \ --entrypoint /bin/bash \ shopify-liquid-mcp ``` ### Database Issues ```bash # Reindex documentation docker run -it --rm \ -v mcp-data:/data \ shopify-liquid-mcp \ python -m shopify_liquid_mcp.ingest --force # Check database docker run -it --rm \ -v mcp-data:/data \ shopify-liquid-mcp \ sqlite3 /data/shopify-liquid.db "SELECT COUNT(*) FROM liquid_docs;" ``` ### Permission Issues ```bash # Run as specific user docker run -it --rm \ --user $(id -u):$(id -g) \ -v mcp-data:/data \ shopify-liquid-mcp # Fix permissions docker run -it --rm \ -v mcp-data:/data \ alpine \ chown -R 1000:1000 /data ``` ## Production Deployment ### Docker Swarm ```yaml version: '3.8' services: shopify-liquid-mcp: image: shopify-liquid-mcp:latest deploy: replicas: 3 restart_policy: condition: on-failure resources: limits: cpus: '0.5' memory: 256M volumes: - mcp-data:/data volumes: mcp-data: driver: local ``` ### Kubernetes ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: shopify-liquid-mcp spec: replicas: 2 selector: matchLabels: app: shopify-liquid-mcp template: metadata: labels: app: shopify-liquid-mcp spec: containers: - name: mcp-server image: shopify-liquid-mcp:latest resources: limits: memory: "256Mi" cpu: "500m" volumeMounts: - name: data mountPath: /data volumes: - name: data persistentVolumeClaim: claimName: mcp-data ``` ## Security ### Non-Root User ```dockerfile # Add in Dockerfile RUN useradd -m -u 1000 mcp USER mcp ``` ### Read-Only Filesystem ```bash docker run -it --rm \ --read-only \ --tmpfs /tmp \ -v mcp-data:/data \ shopify-liquid-mcp ``` ### Security Scanning ```bash # Scan image docker scan shopify-liquid-mcp:latest # Use Trivy trivy image shopify-liquid-mcp:latest ``` ## Resources - [Docker Documentation](https://docs.docker.com/) - [Best Practices](https://docs.docker.com/develop/dev-best-practices/) - [Docker Compose](https://docs.docker.com/compose/) --- **Need help?** Open an issue on [GitHub](https://github.com/florinel-chis/shopify-liquid-mcp/issues)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/florinel-chis/shopify-liquid-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server