Files
mmd/Dockerfile
Henrik Jess Nielsen 8ac5aed3e0 perf: cache pip downloads and Docker layers in CI build
- Add BuildKit pip cache mount to Dockerfile (persists torch/transformers
  downloads across builds on the runner host)
- Enable DOCKER_BUILDKIT=1 in workflow env
- Pull previous image before build for layer cache reuse
- Add --cache-from latest + BUILDKIT_INLINE_CACHE=1 to docker build

BUILDKIT_INLINE_CACHE embeds cache metadata in the pushed image so
--cache-from works from the registry (cold runner or new runner).
SHA tag push reuses already-pushed layers - only metadata transferred.

Expected improvement:
- Unchanged code:       ~5 min -> ~30 sec (layer cache hit)
- requirements changed: ~5 min -> ~1 min (pip disk cache)
- Push:                 only changed layers uploaded; SHA tag is free
2026-05-27 22:21:15 +02:00

38 lines
804 B
Docker

# syntax=docker/dockerfile:1
FROM python:3.12-slim
ARG BUILD_VERSION=unknown
ARG BUILD_TIME=unknown
ARG GIT_COMMIT=unknown
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
BUILD_VERSION=${BUILD_VERSION} \
BUILD_TIME=${BUILD_TIME} \
GIT_COMMIT=${GIT_COMMIT} \
HF_HOME=/app/data/hf-cache \
TRANSFORMERS_VERBOSITY=error \
HF_HUB_DISABLE_PROGRESS_BARS=1
WORKDIR /app
RUN --mount=type=cache,target=/root/.cache/pip \
pip install --upgrade pip
COPY requirements.txt ./
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r requirements.txt
COPY . .
RUN mkdir -p /app/data/logs /app/data/hf-cache
ENV PORT=5001 \
HOST=0.0.0.0 \
LOG_DIR=/app/data/logs \
SAXO_TOKEN_FILE=/app/data/.saxo_token.json
EXPOSE 5001
CMD ["python", "dashboard.py"]