From 42d0f204750d67cb8594f2ebea26c3290f4dd744 Mon Sep 17 00:00:00 2001 From: grillazz Date: Fri, 5 Jun 2026 19:33:55 +0200 Subject: [PATCH] Refactor Dockerfile and compose.yml for slim-build improvements and remove unused database services. --- Makefile | 7 ++++- app/main.py | 18 +++++------ compose.yml | 86 ++++++++++++++++++++++++++--------------------------- 3 files changed, 58 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index 504738e..1ed6bd9 100644 --- a/Makefile +++ b/Makefile @@ -66,12 +66,17 @@ py-upgrade: ## Upgrade Python syntax to a newer version lint: ## Lint and format project code uv run ruff check --fix . + # ==================================================================================== # DOCKER IMAGE BUILDING # ==================================================================================== .PHONY: slim-build slim-build: ## Build smaller and more secure Docker images with docker-slim - docker-slim build --compose-file docker-compose.yml --target-compose-svc api1 --dep-include-target-compose-svc-deps true --http-probe-exec api1 fastapi-sqlalchemy-asyncpg_api1:latest + docker-slim build --compose-file compose.yml \ + --target-compose-svc api1 \ + --dep-include-target-compose-svc-deps true \ + --http-probe-exec api1 fastapi-sqlalchemy-asyncpg-api1:latest \ + --include-path /panettone/lib/python3.14 # ==================================================================================== # DATABASE SEEDING diff --git a/app/main.py b/app/main.py index 75c6acd..fad2df6 100644 --- a/app/main.py +++ b/app/main.py @@ -30,21 +30,21 @@ async def lifespan(app: FastAPI): app.redis = await get_redis() postgres_dsn = global_settings.postgres_url.unicode_string() try: - app.postgres_pool = await asyncpg.create_pool( - dsn=postgres_dsn, - min_size=5, - max_size=20, - ) - await app.logger.ainfo( - "Postgres pool created", idle_size=app.postgres_pool.get_idle_size() - ) + # app.postgres_pool = await asyncpg.create_pool( + # dsn=postgres_dsn, + # min_size=5, + # max_size=20, + # ) + # await app.logger.ainfo( + # "Postgres pool created", idle_size=app.postgres_pool.get_idle_size() + # ) yield except Exception as e: await app.logger.aerror("Error during app startup", error=repr(e)) raise finally: await app.redis.close() - await app.postgres_pool.close() + # await app.postgres_pool.close() middleware = [ diff --git a/compose.yml b/compose.yml index 9589e0f..39ee50b 100644 --- a/compose.yml +++ b/compose.yml @@ -1,7 +1,7 @@ services: api1: container_name: panettone_api1 - build: . + image: fastapi-sqlalchemy-asyncpg-api1.slim:latest environment: - PYTHONPATH=/panettone env_file: @@ -19,45 +19,45 @@ services: - ./alembic:/panettone/alembic ports: - "8080:8080" - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_started - - postgres: - container_name: panettone_postgres - build: - context: ./db - dockerfile: Dockerfile - volumes: - - panettone_postgres_data:/var/lib/postgresql/data - env_file: - - .env - ports: - - 5432:5432 - environment: - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} - - POSTGRES_USER=${POSTGRES_USER?Variable not set} - - POSTGRES_DB=${POSTGRES_DB?Variable not set} - healthcheck: - test: - [ - "CMD-SHELL", "pg_isready -d $POSTGRES_DB -U $POSTGRES_USER" - ] - interval: 5s - timeout: 5s - retries: 5 - - redis: - image: redis:latest - container_name: panettone_redis - ports: - - "6379:6379" - env_file: - - .env - entrypoint: redis-server --appendonly yes - - -volumes: - panettone_postgres_data: {} \ No newline at end of file +# depends_on: +# postgres: +# condition: service_healthy +# redis: +# condition: service_started +# +# postgres: +# container_name: panettone_postgres +# build: +# context: ./db +# dockerfile: Dockerfile +# volumes: +# - panettone_postgres_data:/var/lib/postgresql/data +# env_file: +# - .env +# ports: +# - 5432:5432 +# environment: +# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} +# - POSTGRES_USER=${POSTGRES_USER?Variable not set} +# - POSTGRES_DB=${POSTGRES_DB?Variable not set} +# healthcheck: +# test: +# [ +# "CMD-SHELL", "pg_isready -d $POSTGRES_DB -U $POSTGRES_USER" +# ] +# interval: 5s +# timeout: 5s +# retries: 5 +# +# redis: +# image: redis:latest +# container_name: panettone_redis +# ports: +# - "6379:6379" +# env_file: +# - .env +# entrypoint: redis-server --appendonly yes +# +# +#volumes: +# panettone_postgres_data: {} \ No newline at end of file