1
0
mirror of https://github.com/go-micro/go-micro.git synced 2026-04-30 19:15:24 +02:00
Files
Asim Aslam c800dd3729 feat: add deployment example, workflow example, and MCP benchmarks (#2877)
Docker Compose deployment example (examples/deployment/):
- docker-compose.yml with Consul, MCP gateway, Jaeger tracing
- Dockerfile and Dockerfile.gateway for multi-stage builds
- README with architecture diagram and customization guide

Cross-service workflow example (examples/mcp/workflow/):
- Inventory, Orders, Notifications services
- Shows agents orchestrating multi-step workflows from natural language
- Stock check → reserve → order → notify in a single agent conversation

MCP gateway benchmark suite (gateway/mcp/benchmark_test.go):
- ListTools: ~20μs (10 tools), ~48μs (100 tools)
- Tool lookup: ~19ns (zero-alloc, scales to 500+ tools)
- Auth inspect: ~7ns, scope check: ~16ns
- Rate limiter: ~111ns per check
- JSON encode/decode: ~1.5-2μs per tool

Updated examples README with new examples index.

https://claude.ai/code/session_01GkduEhcrqcG45rdfYh8dAc

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 11:40:10 +00:00

66 lines
1.5 KiB
YAML

# Go Micro + MCP Gateway deployment with Docker Compose
#
# This runs:
# 1. Consul — service registry (discovery)
# 2. App — your go-micro service(s)
# 3. MCP Gateway — standalone MCP gateway connected to Consul
# 4. Jaeger — distributed tracing UI
#
# Usage:
# docker-compose up
#
# Endpoints:
# MCP Tools: http://localhost:3001/mcp/tools
# Consul UI: http://localhost:8500
# Jaeger UI: http://localhost:16686
# Service: http://localhost:9090 (RPC)
services:
# --- Service Registry ---
consul:
image: consul:1.15
ports:
- "8500:8500"
command: agent -server -bootstrap-expect=1 -ui -client=0.0.0.0
# --- Your Go Micro Service ---
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "9090:9090"
environment:
MICRO_REGISTRY: consul
MICRO_REGISTRY_ADDRESS: consul:8500
MICRO_SERVER_ADDRESS: :9090
depends_on:
- consul
restart: unless-stopped
# --- MCP Gateway (standalone) ---
mcp-gateway:
build:
context: .
dockerfile: Dockerfile.gateway
ports:
- "3001:3001"
environment:
MICRO_REGISTRY: consul
MICRO_REGISTRY_ADDRESS: consul:8500
MCP_ADDRESS: :3001
OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
depends_on:
- consul
- app
restart: unless-stopped
# --- Tracing ---
jaeger:
image: jaegertracing/all-in-one:1.53
ports:
- "16686:16686" # UI
- "4318:4318" # OTLP HTTP
environment:
COLLECTOR_OTLP_ENABLED: "true"