FEat: Hinterlegt die docker-compose mit config-Dateien
This commit is contained in:
@@ -12,3 +12,5 @@
|
||||
# Built Visual Studio Code Extensions
|
||||
*.vsix
|
||||
|
||||
data/
|
||||
.env
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
{}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
litellm_settings:
|
||||
drop_params: true # unbekannte Provider-Params stillschweigend verwerfen statt Fehler
|
||||
set_verbose: false
|
||||
json_logs: true
|
||||
request_timeout: 600
|
||||
num_retries: 3
|
||||
|
||||
# Response-Caching über Redis
|
||||
cache: true
|
||||
cache_params:
|
||||
type: redis
|
||||
host: redis
|
||||
port: 6379
|
||||
password: os.environ/REDIS_PASSWORD
|
||||
ttl: 600
|
||||
|
||||
# Logging-Callbacks (Langfuse ist optional, Keys in .env leer lassen falls ungenutzt)
|
||||
success_callback: ["prometheus", "langfuse"]
|
||||
failure_callback: ["prometheus"]
|
||||
|
||||
general_settings:
|
||||
master_key: os.environ/LITELLM_MASTER_KEY
|
||||
database_url: os.environ/DATABASE_URL
|
||||
store_model_in_db: true
|
||||
proxy_batch_write_at: 60 # Sekunden zwischen DB-Writes für Spend-Logs
|
||||
allow_user_auth: true
|
||||
ui_access_mode: "all" # Admin-UI unter /ui erreichbar
|
||||
|
||||
# Alerting (Slack optional, Webhook in .env leer lassen falls ungenutzt)
|
||||
alerting: ["slack"]
|
||||
alerting_threshold: 300
|
||||
|
||||
router_settings:
|
||||
routing_strategy: usage-based-routing-v2
|
||||
redis_host: redis
|
||||
redis_port: 6379
|
||||
redis_password: os.environ/REDIS_PASSWORD
|
||||
num_retries: 3
|
||||
timeout: 30
|
||||
allowed_fails: 3
|
||||
cooldown_time: 60
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
litellm:
|
||||
# litellm-database Image enthält Prisma-Migrationen für die DB-gestützte
|
||||
# Verwaltung von Keys/Teams/Usern über die Admin-UI
|
||||
image: ghcr.io/berriai/litellm-database:main-latest
|
||||
container_name: litellm
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "4000:4000"
|
||||
environment:
|
||||
# --- Grundlegende Auth ---
|
||||
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
|
||||
- LITELLM_SALT_KEY=${LITELLM_SALT_KEY}
|
||||
# --- Datenbank (für Key-/Team-/Budget-Management, Spend-Tracking) ---
|
||||
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
|
||||
- STORE_MODEL_IN_DB=True
|
||||
# --- Redis (Caching, Rate-Limiting, Router-State) ---
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_PORT=6379
|
||||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||
# --- Admin-UI Login (separat vom Master-Key) ---
|
||||
- UI_USERNAME=${UI_USERNAME}
|
||||
- UI_PASSWORD=${UI_PASSWORD}
|
||||
# --- Provider API-Keys (nur füllen, was du wirklich nutzt) ---
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||
- AZURE_API_KEY=${AZURE_API_KEY}
|
||||
- AZURE_API_BASE=${AZURE_API_BASE}
|
||||
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
||||
- GROQ_API_KEY=${GROQ_API_KEY}
|
||||
- MISTRAL_API_KEY=${MISTRAL_API_KEY}
|
||||
# --- Optionale Alerts / Logging ---
|
||||
- SLACK_WEBHOOK_URL=${SLACK_WEBHOOK_URL}
|
||||
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY}
|
||||
- LANGFUSE_SECRET_KEY=${LANGFUSE_SECRET_KEY}
|
||||
volumes:
|
||||
- ./config.yaml:/app/config.yaml
|
||||
command:
|
||||
- "--config"
|
||||
- "/app/config.yaml"
|
||||
- "--port"
|
||||
- "4000"
|
||||
- "--num_workers"
|
||||
- "2"
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:4000/health/liveliness"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
networks:
|
||||
- litellm-network
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
container_name: litellm-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=${POSTGRES_DB}
|
||||
volumes:
|
||||
- ./data/postgres:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
networks:
|
||||
- litellm-network
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: litellm-redis
|
||||
restart: unless-stopped
|
||||
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
|
||||
volumes:
|
||||
- ./data/redis:/data
|
||||
networks:
|
||||
- litellm-network
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: litellm-prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./prometheus.yaml:/etc/prometheus/prometheus.yml
|
||||
- ./data/prometheus:/prometheus
|
||||
networks:
|
||||
- litellm-network
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
prometheus_data:
|
||||
|
||||
networks:
|
||||
litellm-network:
|
||||
driver: bridge
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
# === Kopieren nach ".env" und Werte anpassen ===
|
||||
|
||||
# Master-Key für den Zugriff auf die Proxy-API (Bearer Token für alle Requests)
|
||||
# Erzeugen z.B. mit: openssl rand -hex 32
|
||||
LITELLM_MASTER_KEY=sk-changeme-set-a-long-random-value
|
||||
|
||||
# Salt-Key wird zum Verschlüsseln der in der DB gespeicherten Keys genutzt
|
||||
# NICHT nachträglich ändern, sonst werden gespeicherte Keys unlesbar
|
||||
LITELLM_SALT_KEY=changeme-set-a-long-random-value
|
||||
|
||||
# Postgres
|
||||
POSTGRES_USER=litellm
|
||||
POSTGRES_PASSWORD=changeme-strong-password
|
||||
POSTGRES_DB=litellm
|
||||
|
||||
# Redis
|
||||
REDIS_PASSWORD=changeme-strong-password
|
||||
|
||||
# Admin-UI Login (unter http://<pi-ip>:4000/ui)
|
||||
UI_USERNAME=admin
|
||||
UI_PASSWORD=changeme-strong-password
|
||||
|
||||
# --- Provider API-Keys: nur ausfüllen, was du tatsächlich nutzt ---
|
||||
OPENAI_API_KEY=
|
||||
ANTHROPIC_API_KEY=
|
||||
AZURE_API_KEY=
|
||||
AZURE_API_BASE=
|
||||
GEMINI_API_KEY=
|
||||
GROQ_API_KEY=
|
||||
MISTRAL_API_KEY=
|
||||
|
||||
# --- Optional ---
|
||||
SLACK_WEBHOOK_URL=
|
||||
LANGFUSE_PUBLIC_KEY=
|
||||
LANGFUSE_SECRET_KEY=
|
||||
@@ -0,0 +1,8 @@
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: litellm
|
||||
static_configs:
|
||||
- targets: ["litellm:4000"]
|
||||
metrics_path: /metrics
|
||||
Reference in New Issue
Block a user