From e705416ec4df99b8a64fd4bb1e140e31de2e45a8 Mon Sep 17 00:00:00 2001 From: Jay Date: Tue, 31 Mar 2026 16:55:44 +0100 Subject: [PATCH] bake data.csv into docker image --- .dockerignore | 6 +----- Dockerfile | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.dockerignore b/.dockerignore index 75e7472..5e1eb67 100644 --- a/.dockerignore +++ b/.dockerignore @@ -20,10 +20,6 @@ venv/ # Local output dist/ -# Don't bake data into the image — mount it at runtime -# data.csv is excluded here so it must be provided via docker-compose volume -data.csv - # Git .git/ .gitignore @@ -31,4 +27,4 @@ data.csv # Docker itself Dockerfile docker-compose.yml -.dockerignore \ No newline at end of file +.dockerignore diff --git a/Dockerfile b/Dockerfile index b52518e..fcf7119 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,21 +2,29 @@ FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim WORKDIR /app -# Copy dependency files first (better caching) +# 1. Copy dependency files first for layer caching COPY pyproject.toml uv.lock ./ -# Install dependencies into project environment +# 2. Install dependencies RUN uv sync --frozen --no-dev -# Copy app source +# 3. Explicitly copy data.csv first to ensure it exists +# (This will fail the build if the file is missing locally) +COPY data.csv ./data.csv + +# 4. Copy the rest of the source code COPY . . +# 5. Environment Setup ENV PYTHONUNBUFFERED=1 +# Points to the src folder so Python can find your modules ENV PYTHONPATH=/app/src +# Points to the file we just baked into the root ENV DATA_CSV_PATH=/app/data.csv ENV UV_PROJECT_ENVIRONMENT=/app/.venv ENV UV_LINK_MODE=copy EXPOSE 8000 -CMD ["uv", "run", "gunicorn", "--workers", "2", "--bind", "0.0.0.0:8000", "app:app"] +# 6. Run from the root, but point Gunicorn to the app inside src +CMD ["uv", "run", "gunicorn", "--workers", "2", "--bind", "0.0.0.0:8000", "--chdir", "/app/src", "app:app"]