Files
litellm-tools-logger/Dockerfile
CM Consultor 00ac213080 fix: simplificar Dockerfile - instalar deps como root
- Remover criação de usuário não-root (evita problemas com pip)
- Instalar dependências antes de trocar de usuário
- Imagem oficial já roda como usuário apropriado
- Pip não estava disponível no PATH do usuário litellm
2026-08-06 22:34:52 +00:00

53 lines
1.9 KiB
Docker

# ---------------------------------------------------------------
# Docker image for the Tool Router (based on the official LiteLLM image)
# ---------------------------------------------------------------
# Why use the official base?
# - It already contains the core LiteLLM binaries and entrypoint
# - Smaller image size (no extra OS packages we do not need)
# - Keeps the same security update cadence as the official image
#
# What we add:
# - Our Tool Router source code (tool_router_logger.py, config.yaml, etc.)
# - Extra Python dependencies required for the Jaccard/Embedding logic
# - numpy
# - scikit-learn
# - A tiny wrapper entrypoint that runs litellm --config /app/config.yaml
# ---------------------------------------------------------------
# 1. Use the official LiteLLM image
FROM litellm/litellm:latest
# 2. Set environment variables that control the router
ENV \
PORT=4000 \
TOOL_ROUTER_SIMILARITY_MODE=jaccard \
TOOL_ROUTER_TOP_K=3 \
TOOL_ROUTER_MIN_SIMILARITY=0.15 \
TOOL_ROUTER_ALWAYS_INCLUDE=get_time,help,list_tools \
TOOL_ROUTER_EMBEDDING_MODEL=text-embedding-3-small
# 3. Create working directory
WORKDIR /app
# 4. Copy only the files that belong to the Tool Router
COPY tool_router_logger.py \
config.yaml \
test_tool_router.py \
requirements.txt \
./
# 5. Install the extra Python deps that the router needs (as root)
# - numpy (for cosine similarity)
# - scikit-learn (for the Jaccard fallback)
RUN pip install --no-cache-dir -r requirements.txt
# 6. Expose the port used by LiteLLM
EXPOSE 4000
# 7. Healthcheck - LiteLLM returns a JSON health endpoint
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD curl -fsS "http://127.0.0.1:${PORT}/health" || exit 1
# 8. Default command - run the proxy with our config file
CMD ["sh", "-c", "litellm --config /app/config.yaml --port ${PORT} --host 0.0.0.0"]