mirror of
https://github.com/grillazz/fastapi-sqlalchemy-asyncpg.git
synced 2026-06-10 06:40:38 +03:00
Refactor Dockerfile and compose.yml for slim-build improvements and remove unused database services.
This commit is contained in:
@@ -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
|
||||
|
||||
+9
-9
@@ -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 = [
|
||||
|
||||
+43
-43
@@ -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: {}
|
||||
# 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: {}
|
||||
Reference in New Issue
Block a user