From b91dd66fee0b6014c9b301e4ca345abc3579834b Mon Sep 17 00:00:00 2001 From: B0rbor4d Date: Fri, 31 Jul 2026 23:47:29 +0000 Subject: [PATCH] Multi-stage backend Dockerfile (development/production), DB_* env vars, dev target pinning --- .env.example | 3 +++ backend/Dockerfile | 13 ++++++++++--- docker-compose.yml | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 9f06f51..5edeb27 100644 --- a/.env.example +++ b/.env.example @@ -21,6 +21,9 @@ DATABASE_URL=sqlite+aiosqlite:///./data/app.db # Production: PostgreSQL (uncomment and configure) # DATABASE_URL=postgresql+asyncpg://updater:secure-password@db:5432/insight_updater +DB_NAME=insight_updater +DB_USER=updater +DB_PASSWORD=change-me-db-password # ============================================================================= # REDIS (for Socket.io pub/sub, caching, rate limiting) diff --git a/backend/Dockerfile b/backend/Dockerfile index 0b5b455..1cb7639 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11-slim +FROM python:3.11-slim AS base WORKDIR /app @@ -25,8 +25,15 @@ COPY . . # Create non-root user RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app -USER appuser EXPOSE 8000 -CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"] \ No newline at end of file +# Development stage: hot reload +FROM base AS development +USER appuser +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"] + +# Production stage: no reload +FROM base AS production +USER appuser +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docker-compose.yml b/docker-compose.yml index f2148f2..0f72f69 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: build: context: ./backend dockerfile: Dockerfile + target: development container_name: insight-updater-backend environment: - APP_ENV=development