36 lines
800 B
Docker
36 lines
800 B
Docker
# syntax=docker/dockerfile:1.4
|
|
# Builder stage: compile dependencies
|
|
FROM --platform=$BUILDPLATFORM python:3.10-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Install build dependencies
|
|
RUN apk add --no-cache gcc musl-dev python3-dev mariadb-dev libffi-dev openssl-dev
|
|
|
|
# Copy requirements and install
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
|
|
|
|
# Copy application code
|
|
COPY . .
|
|
|
|
# Final stage: minimal runtime image
|
|
FROM python:3.10-alpine AS final
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy installed packages from builder
|
|
COPY --from=builder /install /usr/local
|
|
# Copy app code
|
|
COPY --from=builder /app /app
|
|
|
|
# Set production environment variables
|
|
ENV FLASK_ENV=production
|
|
ENV FLASK_APP=run.py
|
|
ENV FLASK_RUN_HOST=0.0.0.0
|
|
ENV FLASK_RUN_PORT=5000
|
|
|
|
EXPOSE 5000
|
|
|
|
CMD ["flask", "run"]
|