FROM python:3.12-alpine AS builder ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 WORKDIR /app RUN apk add --no-cache \ build-base \ freetds \ freetds-dev \ linux-headers \ postgresql-dev \ python3-dev \ tzdata COPY req.txt . RUN pip install --upgrade pip \ && pip wheel --wheel-dir /wheels -r req.txt FROM python:3.12-alpine AS runtime ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 WORKDIR /app RUN apk add --no-cache \ freetds \ libpq \ tzdata COPY req.txt . COPY --from=builder /wheels /wheels RUN pip install --upgrade pip \ && pip install --no-index --find-links=/wheels -r req.txt \ && rm -rf /wheels COPY app ./app COPY main.py . COPY sql ./sql RUN mkdir -p logs EXPOSE 8000 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]