Multi-stage backend Dockerfile (development/production), DB_* env vars, dev target pinning
This commit is contained in:
@@ -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)
|
||||
|
||||
+10
-3
@@ -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"]
|
||||
# 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"]
|
||||
|
||||
@@ -8,6 +8,7 @@ services:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
target: development
|
||||
container_name: insight-updater-backend
|
||||
environment:
|
||||
- APP_ENV=development
|
||||
|
||||
Reference in New Issue
Block a user