--- title: "Docker Deployment" sidebarTitle: "Docker" description: "Deploy Context7 On-Premise with Docker Compose" --- Deploy Context7 On-Premise with Docker Compose. This guide assumes you have completed the [On-Premise setup](/enterprise/on-premise) and have a valid license key. ## Prerequisites - Docker and Docker Compose installed - Context7 license key ## Registry Authentication Context7 Enterprise images are hosted on `ghcr.io` and require authentication. Log in using your license key: ```bash LICENSE_KEY="" TOKEN=$(curl -s -H "Authorization: Bearer $LICENSE_KEY" \ https://context7.com/api/v1/license/registry-token | jq -r '.token') docker login ghcr.io -u x-access-token -p $TOKEN ``` Docker stores these credentials locally. `docker compose` will use them automatically when pulling the image. You can also pull manually: ```bash docker pull ghcr.io/context7/enterprise:latest ``` ## Docker Compose Create a `docker-compose.yml`: ```yaml services: context7: image: ghcr.io/context7/enterprise:latest container_name: context7 restart: unless-stopped ports: - "3000:3000" volumes: - context7-data:/data environment: - LICENSE_KEY=${LICENSE_KEY} volumes: context7-data: driver: local ``` The `context7-data` volume is critical. It stores your SQLite database (configuration, credentials, indexed libraries) and all vector embeddings. Without a persistent volume, all data is lost when the container restarts or is recreated. Never run without a volume mount in production. Create a `.env` file in the same directory: ```bash LICENSE_KEY=ctx7sk-... ``` Start the service: ```bash docker compose up -d ``` Once the container is running, open `http://localhost:3000` in your browser to complete the setup wizard. ## Operations ### Updating If your registry login has expired, re-authenticate first: ```bash LICENSE_KEY="" TOKEN=$(curl -s -H "Authorization: Bearer $LICENSE_KEY" \ https://context7.com/api/v1/license/registry-token | jq -r '.token') docker login ghcr.io -u x-access-token -p $TOKEN ``` Then pull the latest image and restart the container: ```bash docker compose pull docker compose up -d ``` Data persists in the named Docker volume across updates. ### Health Check ```bash curl http://localhost:3000/api/health ``` Example response: ```json { "status": "healthy", "version": "1.0.0", "setup": "complete", "license": "configured", "licenseInfo": { "valid": true, "teamSize": 10, "expiresAt": "2026-06-01T00:00:00.000Z" }, "repos_parsed": 5, "uptime": 3600, "connectivity": { "llm": "configured", "llm_provider": "openai", "embedding": "configured", "embedding_provider": "openai", "github": "configured", "gitlab": "not configured" } } ``` ## Connecting AI Clients Once deployed, point your MCP clients to your deployment URL. See [Connecting Your AI Client](/enterprise/on-premise#connecting-your-ai-client) for client-specific instructions.