Add [tool.hatch.build.targets.wheel] packages=["app"] so hatchling knows where the package is. Create stub app/__init__.py in Dockerfile before pip install so metadata generation succeeds without the full source tree. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1 KiB
Docker
34 lines
1 KiB
Docker
FROM python:3.12-slim AS base
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1
|
|
|
|
WORKDIR /app
|
|
|
|
# System deps for WeasyPrint and Pillow
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libpango-1.0-0 \
|
|
libpangoft2-1.0-0 \
|
|
libpangocairo-1.0-0 \
|
|
libgdk-pixbuf-2.0-0 \
|
|
libffi-dev \
|
|
libcairo2 \
|
|
libgirepository1.0-dev \
|
|
shared-mime-info \
|
|
fonts-liberation \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY pyproject.toml .
|
|
# Create stub so hatchling can resolve package metadata before source is copied
|
|
RUN mkdir -p app && touch app/__init__.py
|
|
RUN pip install -e ".[dev]"
|
|
|
|
# ── dev target (default) ───────────────────────────────────────
|
|
FROM base AS dev
|
|
COPY . .
|
|
|
|
# ── prod target ────────────────────────────────────────────────
|
|
FROM base AS prod
|
|
COPY . .
|
|
RUN pip install -e "."
|