Files
litellm/docker-compose.yml

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