---
services:
searxng-mcp:
# image: docker.io/knucklessg1/searxng-mcp:latest
build:
context: . # Debug
dockerfile: debug.Dockerfile
container_name: searxng-mcp
hostname: searxng-mcp
command: [ "searxng-mcp" ]
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- searxng
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
restart: always
env_file:
- .env
environment:
- "PYTHONUNBUFFERED=1"
- "HOST=0.0.0.0"
- "PORT=8001"
- "TRANSPORT=streamable-http"
- "SEARXNG_INSTANCE_URL=${SEARXNG_INSTANCE_URL:-http://searxng:8080}"
ports:
- "8001:8001"
healthcheck:
test: [ "CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8001/health')" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
searxng-agent:
# image: docker.io/knucklessg1/searxng-mcp:latest
build:
context: . # Debug
dockerfile: debug.Dockerfile
container_name: searxng-agent
hostname: searxng-agent
command: [ "searxng-agent" ]
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- searxng-mcp
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
restart: always
env_file:
- .env
environment:
- "PYTHONUNBUFFERED=1"
- "HOST=0.0.0.0"
- "PORT=9001"
- "MCP_URL=http://searxng-mcp:8001/mcp"
- "PROVIDER=openai"
- "LLM_BASE_URL=${LLM_BASE_URL:-http://host.docker.internal:1234/v1}"
- "LLM_API_KEY=${LLM_API_KEY:-llama}"
- "MODEL_ID=${MODEL_ID:-qwen/qwen3-coder-next}"
- "DEBUG=False"
- "ENABLE_WEB_UI=True"
- "WORKSPACE_TOOLS=True"
- "A2A_TOOLS=True"
- "SCHEDULER_TOOLS=True"
- "DYNAMIC_TOOLS=True"
ports:
- "9001:9001"
healthcheck:
test: [ "CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9001/health')" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
searxng:
image: docker.io/searxng/searxng:latest
container_name: searxng
hostname: searxng
environment:
- "PYTHONUNBUFFERED=1"
- SEARXNG_SECRET_KEY=veryLongRandomStringHereAtLeast32chars
- SEARXNG_INSTANCE_NAME=Private SearXNG
- SEARXNG_BIND_ADDRESS=0.0.0.0:8080
- SEARXNG_PORT=8080
- SEARXNG_LIMITER=false
- SEARXNG_PUBLIC_INSTANCE=false
- SEARXNG_IMAGE_PROXY=false
- SEARXNG_METHOD=POST
- SEARXNG_DEFAULT_THEME=simple
- SEARXNG_DEFAULT_LOCALE=en
- SEARXNG_SAFE_SEARCH=0
- SEARXNG_FORMATS=html,json
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- "./mcp/searxng_config:/etc/searxng:rw"
- "./mcp/searxng_data:/var/cache/searxng:rw"
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
ports:
- "8080:8080"
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"