|
1 |
| -FROM debian:bookworm-slim |
| 1 | +FROM debian:bookworm-slim AS py |
2 | 2 | LABEL maintainer= "Antoine Popineau <[email protected]>"
|
3 | 3 |
|
4 | 4 | WORKDIR /app
|
5 | 5 | ENV PATH="/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
6 | 6 | ENV GLINER_MODEL=urchade/gliner_medium-v2.1
|
7 |
| -EXPOSE 9000 |
8 | 7 |
|
9 | 8 | RUN \
|
10 |
| - apt update && apt upgrade -y && \ |
11 |
| - apt install -y --no-install-recommends pipx && \ |
12 |
| - pipx install poetry && \ |
13 |
| - rm -rf /var/cache/apt |
| 9 | + apt update && apt upgrade -y && \ |
| 10 | + apt install -y --no-install-suggests --no-install-recommends pipx python3 python3-pip && \ |
| 11 | + pipx install poetry && \ |
| 12 | + pipx inject poetry poetry-plugin-export && \ |
| 13 | + rm -rf /var/cache/apt |
14 | 14 |
|
15 | 15 | COPY pyproject.toml poetry.lock /app/
|
16 | 16 |
|
17 | 17 | RUN \
|
18 |
| - poetry install && \ |
19 |
| - poetry run python -c 'import os, gliner; gliner.GLiNER.from_pretrained(os.getenv("GLINER_MODEL"))' && \ |
20 |
| - poetry cache clear -n --all '' && \ |
21 |
| - rm -rf /root/.cache/pypoetry/artifacts |
| 18 | + poetry export --format=requirements.txt --output requirements.txt && \ |
| 19 | + python3 -m venv /venv && \ |
| 20 | + /venv/bin/python -m pip install -r requirements.txt |
| 21 | + |
| 22 | +RUN \ |
| 23 | + /venv/bin/python -c 'import os, gliner; gliner.GLiNER.from_pretrained(os.getenv("GLINER_MODEL"))' && \ |
| 24 | + chown -R 65532:65532 /root/.cache/huggingface |
| 25 | + |
| 26 | +FROM al3xos/python-distroless:3.11.11-debian12 |
| 27 | +LABEL maintainer= "Antoine Popineau <[email protected]>" |
| 28 | + |
| 29 | +WORKDIR /app |
| 30 | +ENV PYTHONPATH=/venv/lib/python3.11/site-packages |
| 31 | +USER nonroot |
22 | 32 |
|
| 33 | +COPY --from=py /venv /venv |
| 34 | +COPY --from=py /root/.cache/huggingface /home/nonroot/.cache/huggingface |
23 | 35 | COPY . /app
|
24 | 36 |
|
25 |
| -ENTRYPOINT ["poetry", "run"] |
26 |
| -CMD ["gunicorn", "--bind=0.0.0.0:9000", "--preload", "--workers=8", "--worker-class=uvicorn.workers.UvicornWorker", "main:app"] |
| 37 | +EXPOSE 9000 |
| 38 | +ENTRYPOINT ["python"] |
| 39 | +CMD ["/venv/bin/gunicorn", "--bind=0.0.0.0:9000", "--preload", "--workers=8", "--worker-class=uvicorn.workers.UvicornWorker", "main:app"] |
0 commit comments