Skip to content

Commit 1eef093

Browse files
authored
Merge pull request #224 from grillazz/switch-logger-to-rotoger
docker arch refactor
2 parents 3220044 + 84061b5 commit 1eef093

File tree

7 files changed

+774
-909
lines changed

7 files changed

+774
-909
lines changed

.github/workflows/build-and-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
strategy:
1313
fail-fast: false
1414
matrix:
15-
python-version: [ "3.13" ]
15+
python-version: [ "3.14" ]
1616

1717
env:
1818
PYTHONDONTWRITEBYTECODE: 1

Dockerfile

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
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

1415
ENV 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

2020
COPY pyproject.toml /_lock/
2121
COPY 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

3127
ENV PATH=/panettone/bin:$PATH
3228

@@ -38,15 +34,14 @@ STOPSIGNAL SIGINT
3834
RUN 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

4641
RUN apt-get clean
4742
RUN 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

5146
USER panettone
5247
WORKDIR /panettone
@@ -56,8 +51,4 @@ COPY /templates/ templates/
5651
COPY .env app/
5752
COPY alembic.ini /panettone/alembic.ini
5853
COPY /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

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ docker-up: ## Run project with compose
2626
docker-clean: ## Clean and reset project containers and volumes
2727
docker compose down -v --remove-orphans | true
2828
docker compose rm -f | true
29-
docker volume rm panettone_postgres_data | true
29+
docker volume ls -q | grep panettone_postgres_data | xargs -r docker volume rm | true
3030

3131
# ====================================================================================
3232
# DATABASE MIGRATIONS

compose.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@ services:
2020
ports:
2121
- "8080:8080"
2222
depends_on:
23-
- postgres
24-
- redis
23+
postgres:
24+
condition: service_healthy
25+
redis:
26+
condition: service_started
2527

2628
postgres:
2729
container_name: panettone_postgres

pyproject.old

Lines changed: 0 additions & 90 deletions
This file was deleted.

pyproject.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
[project]
22
name = "fastapi-sqlalchemy-asyncpg"
3-
version = "0.21.0"
3+
version = "0.22.0"
44
description = "A modern FastAPI application with SQLAlchemy 2.0 and AsyncPG for high-performance async database operations. Features include JWT authentication with Redis token storage, password hashing, connection pooling, data processing with Polars, Rich logging, task scheduling with APScheduler, and Shakespeare datasets integration."
55
readme = "README.md"
6-
requires-python = ">=3.13"
6+
requires-python = ">=3.14"
77
dependencies = [
88
"fastapi[all]>=0.116.2",
99
"pydantic[email]>=2.12.0a1",
1010
"pydantic-settings>=2.10.1",
11-
"sqlalchemy>=2.0.43",
12-
"uvicorn[standard]>=0.36.0",
11+
"sqlalchemy==2.0.44",
12+
"uvicorn==0.38.0",
1313
"asyncpg>=0.30.0",
1414
"alembic>=1.16.5",
1515
"httpx>=0.28.1",
@@ -21,15 +21,15 @@ dependencies = [
2121
"pyjwt>=2.10.1",
2222
"redis>=6.4.0",
2323
"bcrypt>=4.3.0",
24-
"polars[pyarrow]>=1.33.1",
24+
"polars==1.35.2",
2525
"python-multipart>=0.0.20",
2626
"fastexcel>=0.15.1",
2727
"inline-snapshot>=0.29.0",
2828
"dirty-equals>=0.10.0",
2929
"polyfactory>=2.22.2",
3030
"granian>=2.5.4",
3131
"apscheduler[redis,sqlalchemy]>=4.0.0a6",
32-
"rotoger>=0.1.1",
32+
"rotoger==0.1.1",
3333
]
3434

3535
[tool.uv]

0 commit comments

Comments
 (0)