-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.test.yml
More file actions
117 lines (111 loc) · 4.43 KB
/
Copy pathdocker-compose.test.yml
File metadata and controls
117 lines (111 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Stack de teste: LiteLLM real + Postgres + este sincronizador.
#
# Nome de projeto e portas próprios para conviver com qualquer outra stack na
# mesma máquina. Tudo preso em 127.0.0.1: o proxy administra chaves, e o painel
# lê estado administrativo — nada disso vai para a rede.
#
# docker compose -f docker-compose.test.yml up -d
# docker compose -f docker-compose.test.yml down -v
name: litellmrtksync-test
services:
litellmrtk-db:
image: postgres:16-alpine
container_name: litellmrtk-test-db
hostname: litellmrtk-db
networks:
- litellmrtksync-test-net
restart: unless-stopped
environment:
- POSTGRES_USER=litellm
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?defina POSTGRES_PASSWORD no .env}
- POSTGRES_DB=litellm
# Sem publicar porta: só o proxy precisa alcançar o banco.
healthcheck:
test: ["CMD-SHELL", "pg_isready -U litellm -d litellm"]
interval: 5s
timeout: 5s
retries: 20
litellmrtk-router:
image: ghcr.io/berriai/litellm:main-latest
container_name: litellmrtk-test-router
hostname: litellmrtk-router
networks:
- litellmrtksync-test-net
restart: unless-stopped
ports:
# Porta interna 4000 (padrao do LiteLLM); publicada em 8083 no host.
# Cada gateway tem a sua porta no host: 8081 9Router, 8082 OmniRoute,
# 8083 LiteLLM.
- "127.0.0.1:8083:4000"
environment:
- DATABASE_URL=postgresql://litellm:${POSTGRES_PASSWORD:?defina POSTGRES_PASSWORD no .env}@litellmrtk-db:5432/litellm
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:?defina LITELLM_MASTER_KEY no .env}
- LITELLM_SALT_KEY=${LITELLM_SALT_KEY:?defina LITELLM_SALT_KEY no .env}
- STORE_MODEL_IN_DB=True
# Credencial da UI do LiteLLM. Sem estas duas, a tela de login aceita a
# MASTER_KEY como senha -- ou seja, para ver um painel o operador digita
# a credencial que administra a instalacao inteira.
- UI_USERNAME=${DASHBOARD_USER:-admin}
- UI_PASSWORD=${DASHBOARD_PASSWORD:?defina DASHBOARD_PASSWORD no .env}
depends_on:
litellmrtk-db:
condition: service_healthy
healthcheck:
test:
- CMD-SHELL
- >-
python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:4000/health/liveliness',timeout=3).status==200 else 1)"
interval: 10s
timeout: 5s
retries: 30
# As migrações do Prisma rodam no primeiro boot e levam um tempo.
start_period: 90s
litellmrtk-sync:
build: .
image: ghcr.io/pathbit/litellmrtksync:local
container_name: litellmrtk-test-sync
hostname: litellmrtk-sync
networks:
- litellmrtksync-test-net
restart: unless-stopped
ports:
# Porta interna 9090, igual nos três sincronizadores; publicada em 9093.
- "127.0.0.1:9093:9090"
environment:
- LITELLM_URL=http://litellmrtk-router:4000
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:?defina LITELLM_MASTER_KEY no .env}
- DATA_DIR=/app/data
- WEB_PORT=9090
- SYNC_INTERVAL=${SYNC_INTERVAL:-300}
- REFRESH_MARGIN=${REFRESH_MARGIN:-900}
# Credencial do painel. Sem estas duas linhas nao havia como definir a
# senha pelo .env: a stack subia, o painel respondia 401 e o unico
# caminho de entrada era descobrir a credencial de recuperacao dentro do
# container -- que e o socorro, nao a porta da frente.
- DASHBOARD_USER=${DASHBOARD_USER:-admin}
- DASHBOARD_PASSWORD=${DASHBOARD_PASSWORD:-}
- LOG_DIR=/app/data/logs
- LOG_RETENTION_DAYS=30
- LOG_LEVEL=INFO
volumes:
- litellmrtksync_data:/app/data
depends_on:
litellmrtk-router:
condition: service_healthy
healthcheck:
test: ["CMD", "/opt/venv/bin/python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:9090/healthz', timeout=3)"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
volumes:
litellmrtksync_data:
networks:
litellmrtksync-test-net:
# Rede propria, com nome explicito, pelo mesmo motivo do
# docker-compose.example.yml: na rede default duas stacks no mesmo daemon
# resolvem o mesmo nome curto e nao da para saber a qual gateway o
# sincronizador se conectou. O nome e o da STACK DE TESTE, e nao
# litellmrtksync-net: as duas usam os mesmos hostnames internos, e dividir
# a rede traria de volta exatamente a colisao que se quis eliminar.
name: litellmrtksync-test-net