Files
discord-fishbowl/Dockerfile.admin
root 10563900a3 Implement comprehensive LLM provider system with global cost protection
- Add multi-provider LLM architecture supporting OpenRouter, OpenAI, Gemini, and custom providers
- Implement global LLM on/off switch with default DISABLED state for cost protection
- Add per-character LLM configuration with provider-specific models and settings
- Create performance-optimized caching system for LLM enabled status checks
- Add API key validation before enabling LLM providers to prevent broken configurations
- Implement audit logging for all LLM enable/disable actions for cost accountability
- Create comprehensive admin UI with prominent cost warnings and confirmation dialogs
- Add visual indicators in character list for custom AI model configurations
- Build character-specific LLM client system with global fallback mechanism
- Add database schema support for per-character LLM settings
- Implement graceful fallback responses when LLM is globally disabled
- Create provider testing and validation system for reliable connections
2025-07-08 07:35:48 -07:00

67 lines
1.5 KiB
Docker

FROM python:3.11-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y \
gcc \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js for frontend build
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y nodejs
# Copy requirements first for better caching
COPY requirements-admin.txt .
RUN pip install --no-cache-dir -r requirements-admin.txt
# Install additional dependencies needed for production
RUN pip install --no-cache-dir asyncpg python-dotenv
# Copy application code
COPY src/ ./src/
COPY config/ ./config/
COPY migrations/ ./migrations/
COPY alembic.ini ./
# Build frontend
COPY admin-frontend/package*.json ./admin-frontend/
WORKDIR /app/admin-frontend
# Install dependencies first (better caching)
RUN npm install --silent
# Copy frontend source code
COPY admin-frontend/ ./
# Build with increased memory for Node.js and disable optimization
ENV NODE_OPTIONS="--max-old-space-size=4096"
ENV GENERATE_SOURCEMAP=false
ENV DISABLE_ESLINT_PLUGIN=true
ENV CI=false
ENV REACT_APP_API_URL=""
ENV PUBLIC_URL="/admin"
ENV TSC_COMPILE_ON_ERROR=true
ENV ESLINT_NO_DEV_ERRORS=true
# Build React app
RUN npm run build
# Verify build output
RUN ls -la build/ && test -f build/index.html
# Back to main directory
WORKDIR /app
# Create logs directory
RUN mkdir -p logs
# Set Python path
ENV PYTHONPATH=/app/src
# Expose admin port
EXPOSE 8294
# Run the admin interface
CMD ["python", "-m", "src.admin.app"]