mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-11 03:38:38 +00:00
* feat(lens): coordinate worker versions and bundled installs * test(lens): exercise bundled Compose startup and restart in CI * fix(lens): refund failed model requests without a response * test(lens): verify trace persistence in the bundled stack * fix(lens): align Helm images and isolate Compose storage * fix(lens): reject worker builds without release identity * fix(lens): encode Compose credentials and normalize worker versions * fix(lens): refuse worker recommendations for unidentified builds
91 lines
2.9 KiB
YAML
91 lines
2.9 KiB
YAML
name: litellm-lens
|
|
|
|
services:
|
|
litellm:
|
|
image: ghcr.io/berriai/litellm:${LITELLM_VERSION:?Set LITELLM_VERSION to a published release, without the v prefix}
|
|
entrypoint:
|
|
- python3
|
|
- -c
|
|
- |
|
|
import os, sys
|
|
from urllib.parse import quote
|
|
postgres_password = quote(os.environ["POSTGRES_PASSWORD"], safe="")
|
|
clickhouse_password = quote(os.environ["CLICKHOUSE_PASSWORD"], safe="")
|
|
os.environ["DATABASE_URL"] = f"postgresql://litellm:{postgres_password}@db:5432/litellm"
|
|
os.environ["CLICKHOUSE_URL"] = f"http://default:{clickhouse_password}@clickhouse:8123"
|
|
os.execv("docker/prod_entrypoint.sh", ["docker/prod_entrypoint.sh", *sys.argv[1:]])
|
|
command: ["--config", "/app/lens-config.yaml", "--port", "4000"]
|
|
environment:
|
|
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY:?Set a strong master key}
|
|
LITELLM_SALT_KEY: ${LITELLM_SALT_KEY:?Set a permanent encryption key and keep it across upgrades}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set a permanent database password}
|
|
STORE_MODEL_IN_DB: "True"
|
|
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD:?Set a permanent ClickHouse password}
|
|
LENS_WORKER_IMAGE: ghcr.io/berriai/litellm-lens-worker:v${LITELLM_VERSION}
|
|
volumes:
|
|
- ./config.yaml:/app/lens-config.yaml:ro
|
|
ports:
|
|
- "127.0.0.1:${LITELLM_PORT:-4000}:4000"
|
|
networks: [proxy, storage]
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
clickhouse:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
|
|
lens-worker:
|
|
profiles: [lens]
|
|
image: ghcr.io/berriai/litellm-lens-worker:v${LITELLM_VERSION}
|
|
environment:
|
|
LITELLM_URL: http://litellm:4000
|
|
LENS_WORKER_TOKEN: ${LENS_WORKER_TOKEN:-}
|
|
depends_on: [litellm]
|
|
networks: [proxy]
|
|
restart: unless-stopped
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp:rw,noexec,nosuid,size=${LENS_WORKER_TMP_SIZE:-1g}
|
|
cap_drop: [ALL]
|
|
security_opt: [no-new-privileges:true]
|
|
|
|
db:
|
|
image: postgres:16
|
|
environment:
|
|
POSTGRES_DB: litellm
|
|
POSTGRES_USER: litellm
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
networks: [storage]
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U litellm -d litellm"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
restart: unless-stopped
|
|
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:26.9.6.6
|
|
environment:
|
|
CLICKHOUSE_USER: default
|
|
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_PASSWORD}
|
|
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: "1"
|
|
volumes:
|
|
- clickhouse_data:/var/lib/clickhouse
|
|
healthcheck:
|
|
test: ["CMD", "clickhouse-client", "--user", "default", "--password", "${CLICKHOUSE_PASSWORD}", "--query", "SELECT 1"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
restart: unless-stopped
|
|
networks: [storage]
|
|
|
|
networks:
|
|
proxy:
|
|
storage:
|
|
internal: true
|
|
|
|
volumes:
|
|
postgres_data:
|
|
clickhouse_data:
|