# build stage FROM python:3.9.16 AS builder # install PDM RUN pip install -U pip setuptools wheel -i https://pypi.tuna.tsinghua.edu.cn/simple RUN pip install pdm -i https://pypi.tuna.tsinghua.edu.cn/simple # copy files COPY pyproject.toml pdm.lock README.md /project/ COPY src/ /project/src ENV PDM_PYPI_URL="https://pypi.tuna.tsinghua.edu.cn/simple" # install dependencies and project into the local packages directory WORKDIR /project RUN --mount=type=cache,target=/root/.cache mkdir __pypackages__ && pdm sync --prod --no-editable # run stage FROM python:3.9.16 # retrieve packages from build stage ENV PYTHONPATH=/project/pkgs COPY --from=builder /project/__pypackages__/3.9/lib /project/pkgs # retrieve executables COPY --from=builder /project/__pypackages__/3.9/bin/* /bin/ COPY ./assets /home/appuser/.EasyOCR/model WORKDIR /home/appuser RUN useradd -m appuser && chown -R appuser:appuser /home/appuser USER appuser # set command/entrypoint, adapt to fit your needs CMD ["/bin/gunicorn", "-w", "3", "-b", "0.0.0.0:8080", "--timeout", "300", "app:app"]