1- FROM ubuntu:oracular AS build
1+ FROM ubuntu:25.10 AS base
22
3- RUN apt-get update -qy && apt-get install -qyy \
3+ RUN apt-get update -qy \
4+ && apt-get install -qyy \
45 -o APT::Install-Recommends=false \
56 -o APT::Install-Suggests=false \
67 build-essential \
78 ca-certificates \
89 python3-setuptools \
9- python3.13 -dev \
10- git
10+ python3.14 -dev
11+
1112
12- COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/ bin/uv
13+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx / bin/
1314
1415ENV UV_LINK_MODE=copy \
1516 UV_COMPILE_BYTECODE=1 \
16- UV_PYTHON_DOWNLOADS=never \
17- UV_PYTHON=python3.13 \
17+ UV_PYTHON=python3.14 \
1818 UV_PROJECT_ENVIRONMENT=/panettone
1919
2020COPY pyproject.toml /_lock/
2121COPY uv.lock /_lock/
2222
23- RUN --mount=type=cache,target=/root/.cache
24- RUN cd /_lock && uv sync \
25- --locked \
26- --no-dev \
27- --no-install-project
23+ RUN cd /_lock && uv sync --locked --no-install-project
2824# #########################################################################
29- FROM ubuntu:oracular
25+ FROM ubuntu:25.10
3026
3127ENV PATH=/panettone/bin:$PATH
3228
@@ -38,15 +34,14 @@ STOPSIGNAL SIGINT
3834RUN apt-get update -qy && apt-get install -qyy \
3935 -o APT::Install-Recommends=false \
4036 -o APT::Install-Suggests=false \
41- python3.13 \
42- libpython3.13 \
43- libpcre3 \
44- libxml2
37+ python3.14 \
38+ libpython3.14 \
39+ libpcre3
4540
4641RUN apt-get clean
4742RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
4843
49- COPY --from=build --chown=panettone:panettone /panettone /panettone
44+ COPY --from=base --chown=panettone:panettone /panettone /panettone
5045
5146USER panettone
5247WORKDIR /panettone
@@ -56,8 +51,4 @@ COPY /templates/ templates/
5651COPY .env app/
5752COPY alembic.ini /panettone/alembic.ini
5853COPY /alembic/ /panettone/alembic/
59- COPY pyproject.toml /panettone/pyproject.toml
60-
61- RUN python -V
62- RUN python -Im site
63- RUN python -Ic 'import uvicorn'
54+ COPY pyproject.toml /panettone/pyproject.toml
0 commit comments