ALM-2 / Dockerfile
ACA050's picture
Upload 4 files
fe8e91f verified
# 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"]