79 lines
3.2 KiB
YAML
79 lines
3.2 KiB
YAML
version: '3.2'
|
|
|
|
services:
|
|
litellm:
|
|
image: litellm/litellm:latest
|
|
restart: unless-stopped
|
|
env_file:
|
|
- stack.env
|
|
volumes:
|
|
- /home/trav/dkr/litellm/config/config.yaml:/app/config.yaml
|
|
- /home/trav/dkr/litellm/config/model_config.yaml:/app/model_config.yaml
|
|
- /home/trav/dkr/litellm/config/litellm_settings.yaml:/app/litellm_settings.yaml
|
|
- /home/trav/dkr/litellm/config/router_settings.yaml:/app/router_settings.yaml
|
|
- /home/trav/dkr/litellm/config/general_settings.yaml:/app/general_settings.yaml
|
|
# - ./config/config.yaml:/app/config.yaml
|
|
# - ./config/model_config.yaml:/app/model_config.yaml
|
|
# - ./config/litellm_settings.yaml:/app/litellm_settings.yaml
|
|
# - ./config/router_settings.yaml:/app/router_settings.yaml
|
|
# - ./config/general_settings.yaml:/app/general_settings.yaml
|
|
command:
|
|
- "--config=/app/config.yaml"
|
|
# environment:
|
|
# DATABASE_URL: ${DATABASE_URL}
|
|
# LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
|
|
# LITELLM_SALT_KEY: ${LITELLM_SALT_KEY}
|
|
# UI_USERNAME: ${UI_USERNAME}
|
|
# UI_PASSWORD: ${UI_PASSWORD}
|
|
# STORE_MODEL_IN_DB: "True"
|
|
# # Provider Keys
|
|
# OPENAI_API_KEY: ${OPENAI_API_KEY}
|
|
# COHERE_API_KEY: ${COHERE_API_KEY}
|
|
# ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
|
|
# LITELLM_LOG: ${LITELLM_LOG:-WARN}
|
|
# LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY}
|
|
# LANGFUSE_SECRET_KEY: ${LANGFUSE_SECRET_KEY}
|
|
# LANGFUSE_OTEL_HOST: ${LANGFUSE_OTEL_HOST}
|
|
networks:
|
|
- net
|
|
- badge-net
|
|
- public
|
|
expose:
|
|
- 4000
|
|
healthcheck:
|
|
# Simple TCP port check using Python - no auth or external tools required
|
|
test:
|
|
["CMD", "python", "-c", "import socket; s = socket.socket(); s.settimeout(5); s.connect(('localhost', 4000)); s.close()"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
deploy:
|
|
replicas: 1
|
|
update_config:
|
|
parallelism: 1
|
|
delay: 10s
|
|
failure_action: rollback
|
|
placement:
|
|
constraints:
|
|
- node.hostname == little
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.swarm.network=public"
|
|
- "traefik.http.routers.litellm.entrypoints=web"
|
|
- "traefik.http.routers.litellm.rule=Host(`llm.lab`) || Host(`llm.toy`)"
|
|
- "traefik.http.routers.litellm.service=litellm"
|
|
- "traefik.http.services.litellm.loadbalancer.server.port=4000"
|
|
# Health check using unauthenticated endpoint
|
|
- "traefik.http.services.litellm.loadbalancer.healthcheck.path=/health/liveliness"
|
|
- "traefik.http.services.litellm.loadbalancer.healthcheck.interval=30s"
|
|
- "traefik.http.services.litellm.loadbalancer.healthcheck.timeout=5s"
|
|
|
|
networks:
|
|
net:
|
|
driver: overlay
|
|
attachable: true
|
|
public:
|
|
external: true
|
|
badge-net:
|
|
external: true
|