# Runtime image for AgentEvalTool backend. # The React frontend dist is mounted at runtime, so this image only packages # the Python backend and its dependencies. FROM python:3.11.15-slim-bookworm AS runtime WORKDIR /app # Build-time metadata. Populated by `docker build --build-arg ...` and # exposed as runtime env vars so /api/health can report what's running. ARG BUILD_COMMIT=unknown ARG BUILD_TIME=unknown ENV AGENTEVAL_BUILD_COMMIT=${BUILD_COMMIT} ENV AGENTEVAL_BUILD_TIME=${BUILD_TIME} # Use Aliyun mirrors to avoid slow/blocked upstream access from China. ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ ENV PIP_TRUSTED_HOST=mirrors.aliyun.com RUN sed -i \ -e 's|deb.debian.org|mirrors.aliyun.com|g' \ -e 's|security.debian.org|mirrors.aliyun.com/debian-security|g' \ /etc/apt/sources.list.d/debian.sources 2>/dev/null || true RUN sed -i \ -e 's|deb.debian.org|mirrors.aliyun.com|g' \ -e 's|security.debian.org|mirrors.aliyun.com/debian-security|g' \ /etc/apt/sources.list 2>/dev/null || true # Install any system build dependencies that may be needed for Python wheels. RUN apt-get update \ && apt-get install -y --no-install-recommends gcc \ && rm -rf /var/lib/apt/lists/* COPY pyproject.toml README.md alembic.ini ./ COPY migrations ./migrations COPY backend ./backend RUN pip install --no-cache-dir -e . EXPOSE 8000 # Apply any pending schema migrations before starting the server. CMD ["sh", "-c", "alembic upgrade head && agenteval server start --host 0.0.0.0 --port 8000"]