From f78607f5061d70b019e440dd39516c3e04e71af4 Mon Sep 17 00:00:00 2001 From: Leon Date: Wed, 23 Jul 2025 21:27:09 +0200 Subject: [PATCH] fix: disable fastapi api docs in docker --- backend/Dockerfile | 1 + backend/app/core/config.py | 5 +++++ backend/app/main.py | 9 +++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 23d6795..0cf4b97 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -18,5 +18,6 @@ WORKDIR /app EXPOSE 8000 +ENV LETTERFEED_PRODUCTION=true ENV PATH="/app/.venv/bin:$PATH" CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000"] diff --git a/backend/app/core/config.py b/backend/app/core/config.py index b7b4583..6862aac 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -11,6 +11,11 @@ class Settings(BaseSettings): env_file=".env", extra="ignore", env_prefix="LETTERFEED_", frozen=True ) + production: bool = Field( + False, + validation_alias=AliasChoices("PRODUCTION", "LETTERFEED_PRODUCTION"), + ) + database_url: str = Field( "sqlite:////data/letterfeed.db", validation_alias=AliasChoices("DATABASE_URL", "LETTERFEED_DATABASE_URL"), diff --git a/backend/app/main.py b/backend/app/main.py index 1b2e06e..92d8005 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -4,6 +4,7 @@ from fastapi import Depends, FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.auth import protected_route +from app.core.config import settings from app.core.database import Base, SessionLocal, engine from app.core.logging import get_logger, setup_logging from app.core.scheduler import scheduler, start_scheduler_with_interval @@ -16,7 +17,6 @@ async def lifespan(app: FastAPI): """Handle application startup and shutdown events.""" setup_logging() logger = get_logger(__name__) - from app.core.config import settings logger.info(f"DATABASE_URL used: {settings.database_url}") logger.info("Starting up Letterfeed backend...") @@ -33,7 +33,12 @@ async def lifespan(app: FastAPI): logger.info("...Letterfeed backend shut down.") -app = FastAPI(lifespan=lifespan) +# Disable docs in production +fastapi_kwargs = {} +if settings.production: + fastapi_kwargs.update({"docs_url": None, "redoc_url": None, "openapi_url": None}) + +app = FastAPI(lifespan=lifespan, **fastapi_kwargs) # CORS Middleware app.add_middleware(