- 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
38 lines
804 B
Docker
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"]
|