services: armenian-national-library-mcp: build: context: . image: armenian-national-library-mcp:local init: true user: "1000:1000" read_only: true cap_drop: - ALL security_opt: - no-new-privileges:true pids_limit: 128 mem_limit: 512m cpus: 1.0 tmpfs: - /tmp:rw,noexec,nosuid,nodev,size=16m environment: MCP_TRANSPORT: http MCP_HOST: 0.0.0.0 MCP_PORT: 3000 MCP_ALLOWED_HOSTS: ${MCP_ALLOWED_HOSTS:-localhost,127.0.0.1} MCP_ALLOWED_ORIGINS: ${MCP_ALLOWED_ORIGINS:-http://localhost:3000,http://127.0.0.1:3000} MCP_AUTH_MODE: ${MCP_AUTH_MODE:-local} MCP_BEARER_TOKEN: ${MCP_BEARER_TOKEN:-} MCP_TRUST_PROXY: ${MCP_TRUST_PROXY:-false} ports: - "${MCP_BIND_ADDRESS:-127.0.0.1}:${MCP_PUBLIC_PORT:-3000}:3000" healthcheck: test: - CMD - node - -e - fetch('http://127.0.0.1:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1)) interval: 30s timeout: 5s start_period: 10s retries: 3 stop_grace_period: 20s