Skip to content

Commit 42b878d

Browse files
committed
Trying to go distroless.
1 parent a4c9721 commit 42b878d

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

Dockerfile

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
1-
FROM debian:bookworm-slim
1+
FROM debian:bookworm-slim AS py
22
LABEL maintainer="Antoine Popineau <[email protected]>"
33

44
WORKDIR /app
55
ENV PATH="/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
66
ENV GLINER_MODEL=urchade/gliner_medium-v2.1
7-
EXPOSE 9000
87

98
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
1414

1515
COPY pyproject.toml poetry.lock /app/
1616

1717
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
2232

33+
COPY --from=py /venv /venv
34+
COPY --from=py /root/.cache/huggingface /home/nonroot/.cache/huggingface
2335
COPY . /app
2436

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

Comments
 (0)