# Dockerfile for AegisLM Full Red-Teaming Platform FROM python:3.10-slim # Prevent python from buffering stdout/stderr (useful for docker logs) ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 # Working Directory WORKDIR /app # Install system dependencies (needed for some ML and network libraries) RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ git \ && rm -rf /var/lib/apt/lists/* # 1. Update and Copy Requirements # Using the comprehensive root requirements.txt for the red-teaming platform COPY requirements.txt ./ RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # 2. Copy the Core Backend Source Code # The Gradio app (app.py) and its API Client depend on this folder COPY backend/ ./backend/ COPY api_client.py app.py config.py endpoint_configs.py ./ COPY visual_test_images/ ./visual_test_images/ # 3. Create Storage & Configuration Directories # Gradio frontend data, experiment history, and logs RUN mkdir -p /app/gradio_data && \ mkdir -p /app/logs && \ mkdir -p /app/data && \ chmod -R 777 /app/gradio_data /app/logs /app/data # 4. Environment Variables for Gradio ENV GRADIO_SERVER_NAME="0.0.0.0" ENV GRADIO_PORT=7860 ENV PORT=7860 # 5. Expose Port EXPOSE 7860 # Check Health (Optional but recommended for production) HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \ CMD curl -f http://localhost:7860/ || exit 1 # 6. Run the Application # Default to Gradio frontend (accessible at :7860) CMD ["python", "app.py"]