Files
micro--go-micro/examples/deployment/README.md
T
wehub-resource-sync e071084ebe
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:33 +08:00

117 lines
2.9 KiB
Markdown

# Docker Compose Deployment Example
Run a go-micro service with MCP gateway, service registry, and distributed tracing in one command.
## Architecture
```
┌─────────┐ discover ┌──────────┐ RPC ┌─────────┐
│ Agent │ ─────────────→ │ MCP │ ──────────→ │ Your │
│ (Claude) │ MCP :3001 │ Gateway │ │ Service │
└─────────┘ └──────────┘ └─────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Consul │ │ Jaeger │
│ Registry │ │ Tracing │
│ :8500 │ │ :16686 │
└──────────┘ └──────────┘
```
## Quick Start
```bash
docker-compose up
```
## Endpoints
| Service | URL |
|---------|-----|
| MCP Tools | http://localhost:3001/mcp/tools |
| Consul UI | http://localhost:8500 |
| Jaeger UI | http://localhost:16686 |
| Service RPC | http://localhost:9090 |
## Test
```bash
# List MCP tools
curl http://localhost:3001/mcp/tools | jq
# Call a tool
curl -X POST http://localhost:3001/mcp/call \
-H 'Content-Type: application/json' \
-d '{"tool": "myservice.Handler.Method", "arguments": {"key": "value"}}'
# View traces in Jaeger
open http://localhost:16686
```
## Connect Claude Code
```bash
# Claude Code can connect to the running MCP gateway
# Add to your Claude Code MCP settings:
```
```json
{
"mcpServers": {
"my-services": {
"url": "http://localhost:3001/mcp"
}
}
}
```
## Customizing
### Add Your Service
Replace the `app` service's build context with your service directory:
```yaml
app:
build:
context: ../path/to/your/service
dockerfile: Dockerfile
```
### Add More Services
```yaml
users:
build: ./users
environment:
MICRO_REGISTRY: consul
MICRO_REGISTRY_ADDRESS: consul:8500
orders:
build: ./orders
environment:
MICRO_REGISTRY: consul
MICRO_REGISTRY_ADDRESS: consul:8500
```
All services register with Consul. The MCP gateway discovers them automatically.
### Add Redis Cache
```yaml
redis:
image: redis:7-alpine
ports:
- "6379:6379"
```
Then set `MICRO_CACHE_ADDRESS=redis:6379` on your service.
### Production Considerations
- Add health checks to each service
- Use named volumes for Consul data persistence
- Configure rate limiting on the MCP gateway
- Set up TLS between services
- Use secrets management for API keys