|
1 | | -FROM python:{{ cookiecutter.python_version }}-slim-stretch |
| 1 | +{% if cookiecutter.dependency_management_tool == "uv" -%} |
| 2 | +FROM ghcr.io/astral-sh/uv:python{{ cookiecutter.python_version }}-bookworm-slim AS builder |
| 3 | +{%- else -%} |
| 4 | +FROM python:{{ cookiecutter.python_version }}-slim-bookworm AS builder |
| 5 | +{%- endif %} |
2 | 6 |
|
3 | | -ARG USERNAME={{ cookiecutter.github_username.lower().replace(' ', '_').replace('-', '_') }} |
| 7 | +WORKDIR /app |
| 8 | +COPY . /app |
| 9 | + |
| 10 | +{% if cookiecutter.dependency_management_tool == "uv" -%} |
| 11 | +ENV UV_COMPILE_BYTECODE=1 \ |
| 12 | + UV_LINK_MODE=copy |
| 13 | + |
| 14 | +RUN --mount=type=cache,target=/root/.cache/uv \ |
| 15 | + --mount=type=bind,source=uv.lock,target=uv.lock \ |
| 16 | + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ |
| 17 | + uv sync --frozen --no-install-project --no-dev |
4 | 18 |
|
| 19 | +RUN --mount=type=cache,target=/root/.cache/uv \ |
| 20 | + uv sync --frozen --no-dev |
| 21 | +{%- else -%} |
5 | 22 | ENV PYTHONUNBUFFERED=1 \ |
6 | 23 | PYTHONFAULTHANDLER=1 \ |
7 | | - PYTHONDONTWRITEBYTECODE=1 \ |
8 | | - PATH=$PATH:/home/$USERNAME/.local/bin |
| 24 | + PYTHONDONTWRITEBYTECODE=1 |
9 | 25 |
|
10 | | -RUN useradd --create-home $USERNAME |
11 | | -USER $USERNAME |
12 | | -WORKDIR /home/$USERNAME |
| 26 | +RUN python3 -m venv .venv |
13 | 27 |
|
14 | | -COPY . /home/$USERNAME/ |
| 28 | +ENV PATH="/app/.venv/bin:$PATH" |
15 | 29 |
|
16 | | -RUN python3 -m pip install--no-cache-dir --upgrade pip && \ |
| 30 | +RUN python3 -m pip install --no-cache-dir --upgrade pip && \ |
17 | 31 | python3 -m pip install --no-cache-dir -r requirements.txt |
| 32 | +{%- endif %} |
| 33 | + |
| 34 | + |
| 35 | +FROM python:{{ cookiecutter.python_version }}-slim-bookworm |
| 36 | + |
| 37 | +ARG USERNAME={{ cookiecutter.github_username.lower().replace(' ', '_').replace('-', '_') }} |
| 38 | + |
| 39 | +RUN useradd -m $USERNAME |
| 40 | +USER $USERNAME |
| 41 | +WORKDIR /app |
| 42 | + |
| 43 | +COPY --from=builder --chown=$USERNAME:$USERNAME /app /app |
| 44 | + |
| 45 | +ENV PATH="/app/.venv/bin:$PATH" |
0 commit comments