Skip to content

Instantly share code, notes, and snippets.

@HauptJ
Last active April 10, 2026 18:51
Show Gist options
  • Select an option

  • Save HauptJ/591b833eb5c82fa9e30f39ce7fe97ba7 to your computer and use it in GitHub Desktop.

Select an option

Save HauptJ/591b833eb5c82fa9e30f39ce7fe97ba7 to your computer and use it in GitHub Desktop.
ZeroClaw MCPJungle Develompment Docker Compose
# ZeroClaw Docker Compose Example
#
# Quick start:
# 1. Copy this file and set your API key
# 2. Run: docker compose up -d
# 3. Access gateway at http://localhost:42617
#
# For more info: https://github.com/zeroclaw-labs/zeroclaw
services:
zeroclaw:
image: docker.io/hauptj/zeroclaw-debian:0.6.9
# For ARM64 environments where the distroless image exits immediately,
# switch to the Debian compatibility image instead:
# image: ghcr.io/zeroclaw-labs/zeroclaw:debian
# Or build locally (distroless, no shell):
# build: .
# Or build the Debian variant (includes bash, git, curl):
# build:
# context: .
# dockerfile: Dockerfile.debian
container_name: zeroclaw
restart: unless-stopped
environment:
# Required: Your LLM provider API key
- API_KEY=FILL_ME_IN
# Or use the prefixed version:
# - ZEROCLAW_API_KEY=${ZEROCLAW_API_KEY:-}
# Optional: LLM provider (default: openrouter)
# Options: openrouter, openai, anthropic, ollama
- PROVIDER=anthropic
# Allow public bind inside Docker (required for container networking)
- ZEROCLAW_ALLOW_PUBLIC_BIND=true
# Default gateway port inside container
- ZEROCLAW_GATEWAY_PORT=${ZEROCLAW_GATEWAY_PORT:-42617}
# Optional: Model override
- ZEROCLAW_MODEL=claude-sonnet-4-6
volumes:
# Persist workspace and config (must match WORKDIR/HOME in Dockerfile)
- zeroclaw-data:/zeroclaw-data
ports:
# Gateway API port (override HOST_PORT if 42617 is taken)
- "${HOST_PORT:-42617}:${ZEROCLAW_GATEWAY_PORT:-42617}"
# Resource limits
deploy:
resources:
limits:
cpus: '2'
memory: 512M
reservations:
cpus: '0.5'
memory: 32M
# Health check — uses lightweight status instead of full diagnostics.
# For images with curl, prefer: curl -f http://localhost:42617/health
healthcheck:
test: ["CMD", "zeroclaw", "status", "--format=exit-code"]
interval: 60s
timeout: 10s
retries: 3
start_period: 10s
db:
image: postgres:17
container_name: mcpjungle-db
environment:
POSTGRES_USER: mcpjungle
POSTGRES_PASSWORD: mcpjungle
POSTGRES_DB: mcpjungle
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "PGPASSWORD=mcpjungle pg_isready -U mcpjungle"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
mcpjungle:
image: ghcr.io/mcpjungle/mcpjungle:${MCPJUNGLE_IMAGE_TAG:-latest-stdio}
container_name: mcpjungle-server
environment:
DATABASE_URL: postgres://mcpjungle:mcpjungle@db:5432/mcpjungle
SERVER_MODE: ${SERVER_MODE:-development}
OTEL_ENABLED: ${OTEL_ENABLED:-false}
MCP_SERVER_INIT_REQ_TIMEOUT_SEC: ${MCP_SERVER_INIT_REQ_TIMEOUT_SEC:-10}
ports:
- "${HOST_PORT:-8080}:8080"
volumes:
# Mount host filesystem current directory to enable filesystem MCP server access
- .:/host:ro
# Other options:
# - ${HOME}:/host/home:ro
# - /tmp:/host/tmp:rw
depends_on:
db:
condition: service_healthy
restart: always
volumes:
zeroclaw-data:
db_data:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment