# https://pdm-project.org/latest/usage/advanced/#use-pdm-in-a-multi-stage-dockerfile

# Build stage
ARG PYTHON_BASE=3.11-slim
FROM python:$PYTHON_BASE AS builder

# Install PDM and disable update check
RUN pip install -U pdm
ENV PDM_CHECK_UPDATE=false

# Copy project files
COPY . /project

# Install dependencies and activate virtual env
WORKDIR /project
RUN pdm install --prod --no-editable
RUN pdm venv activate

# Run stage
FROM python:$PYTHON_BASE

# Retrieve packages from build stage
COPY --from=builder /project/.venv/ /project/.venv
ENV PATH="/project/.venv/bin:$PATH"

# Set command/entrypoint, adapt to fit your needs
COPY src /project/src
COPY config /project/config
EXPOSE 8000
CMD ["gunicorn", \
    "--chdir", "/project/src", \
    "--config", "/project/config/gunicorn.py", \
    "wsgi:app"]