Files
Crumb-Core-v.1/docs/rz-deployment/rz-deployment.yml

136 lines
3.3 KiB
YAML

version: '3.8'
# Crumbcore für RZ-Nullfeld
# Optimiert für internen Gebrauch mit fester IP
# 605 MB Volume, 3 Container, Production Ready
services:
app:
image: crumbcore:v1
container_name: rz-crumbcore-app
restart: unless-stopped
ports:
- "8000:8000" # Oder interne IP:Port
environment:
# Database
- DATABASE_URL=mysql+pymysql://crumb:${DB_PASSWORD}@db:3306/crumbforest
# API Keys (OpenRouter für alles)
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
# RAG Configuration
- DEFAULT_EMBEDDING_PROVIDER=openrouter
- DEFAULT_EMBEDDING_MODEL=text-embedding-3-small
- DEFAULT_COMPLETION_PROVIDER=openrouter
- DEFAULT_COMPLETION_MODEL=anthropic/claude-3-5-sonnet
# Qdrant
- QDRANT_HOST=qdrant
- QDRANT_PORT=6333
# Security (für RZ interne Nutzung)
- CORS_ORIGINS=http://your-rz-ip:8000,https://docs.rz-nullfeld.de
- SECRET_KEY=${SECRET_KEY}
# Feature Flags
- ENABLE_AUTO_INDEXING=true
- ENABLE_CHAT=true
depends_on:
db:
condition: service_healthy
qdrant:
condition: service_started
volumes:
# Nur Logs & Uploads (kein Code Volume!)
- app-logs:/app/logs
- app-uploads:/app/uploads
networks:
- rz-internal
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
db:
image: mariadb:11.7
container_name: rz-crumbcore-db
restart: unless-stopped
environment:
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MARIADB_DATABASE=crumbforest
- MARIADB_USER=crumb
- MARIADB_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Berlin
volumes:
- db-data:/var/lib/mysql
networks:
- rz-internal
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
qdrant:
image: qdrant/qdrant:v1.12.5
container_name: rz-crumbcore-qdrant
restart: unless-stopped
ports:
- "6333:6333" # API
- "6334:6334" # gRPC (optional)
volumes:
- qdrant-data:/qdrant/storage
networks:
- rz-internal
environment:
- QDRANT__SERVICE__HTTP_PORT=6333
- QDRANT__SERVICE__GRPC_PORT=6334
volumes:
db-data:
driver: local
qdrant-data:
driver: local
app-logs:
driver: local
app-uploads:
driver: local
networks:
rz-internal:
driver: bridge
# Deployment Notes für RZ:
#
# 1. Secrets Management:
# - DB_PASSWORD: Starkes Passwort
# - DB_ROOT_PASSWORD: Extra starkes Passwort
# - SECRET_KEY: `openssl rand -hex 32`
# - OPENROUTER_API_KEY: Von OpenRouter Dashboard
#
# 2. Resource Limits (optional):
# deploy:
# resources:
# limits:
# cpus: '2.0'
# memory: 1G
# reservations:
# cpus: '0.5'
# memory: 512M
#
# 3. Backup Strategy:
# - Volume: db-data (täglich)
# - Volume: qdrant-data (wöchentlich)
# - Logs: app-logs (retention 30d)
#
# 4. Monitoring:
# - Health Endpoints: /health, /metrics
# - Logs: docker logs rz-crumbcore-app
# - Qdrant UI: http://your-ip:6333/dashboard
#
# 5. Updates:
# docker pull crumbcore:v1
# docker compose -f rz-deployment.yml up -d --no-deps app