|
1 | | -FROM python:3.13-slim as builder |
| 1 | +FROM python:3.13-slim AS builder |
2 | 2 |
|
3 | | -# metadata |
4 | | -MAINTAINER steder@gmail.com |
5 | | -LABEL version="1.0" |
| 3 | +LABEL org.opencontainers.image.authors="steder@gmail.com" |
| 4 | +LABEL version="2.0" |
6 | 5 |
|
7 | | -ENV ENV=development |
| 6 | +ENV ENV=development \ |
| 7 | + UV_LINK_MODE=copy \ |
| 8 | + UV_COMPILE_BYTECODE=1 \ |
| 9 | + UV_PYTHON_DOWNLOADS=never |
8 | 10 |
|
9 | | -# actual container setup: |
10 | 11 | RUN apt-get update \ |
11 | 12 | && apt-get -y upgrade \ |
12 | 13 | && apt-get install -y --no-install-recommends \ |
13 | 14 | build-essential \ |
14 | 15 | imagemagick \ |
15 | 16 | git \ |
16 | | - && pip install poetry \ |
17 | 17 | && apt-get clean \ |
18 | 18 | && rm -rf /var/lib/apt/lists/* |
19 | 19 |
|
20 | | -FROM builder as giraffe |
| 20 | +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv |
21 | 21 |
|
22 | | -# Giraffe listens on 9876 by default |
23 | | -EXPOSE 9876 |
| 22 | +FROM builder AS giraffe |
24 | 23 |
|
25 | | -# let's get the code! |
| 24 | +EXPOSE 9876 |
26 | 25 |
|
27 | 26 | WORKDIR /opt/app |
28 | 27 |
|
29 | | -COPY pyproject.toml poetry.lock /opt/app/ |
30 | | -RUN poetry install --no-root --without=dev |
| 28 | +COPY pyproject.toml uv.lock /opt/app/ |
| 29 | +RUN uv sync --frozen --no-dev --no-install-project |
31 | 30 |
|
32 | 31 | COPY . /opt/app |
33 | 32 |
|
34 | | -RUN poetry install --without=dev |
35 | | - |
36 | | -CMD ["poetry", "run", "gunicorn", "-k", "uvicorn.workers.UvicornWorker", "-c", "etc/gunicorn.conf.py", "giraffe:app", "--log-level=DEBUG"] |
| 33 | +CMD ["uv", "run", "--no-dev", "gunicorn", "-k", "uvicorn.workers.UvicornWorker", "-c", "etc/gunicorn.conf.py", "giraffe:app", "--log-level=DEBUG"] |
37 | 34 |
|
38 | | -FROM giraffe as dev |
39 | | -RUN poetry install |
| 35 | +FROM giraffe AS dev |
| 36 | +RUN uv sync --frozen |
40 | 37 |
|
41 | | -CMD ["poetry", "run", "python", "/opt/app/giraffe.py"] |
| 38 | +CMD ["uv", "run", "python", "/opt/app/giraffe.py"] |
0 commit comments