first commit
This commit is contained in:
@ -1,23 +1,35 @@
|
|||||||
# Backend Dockerfile
|
# syntax=docker/dockerfile:1.4
|
||||||
FROM python:3.10-slim
|
# Builder stage: compile dependencies
|
||||||
|
FROM --platform=$BUILDPLATFORM python:3.10-alpine AS builder
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install system dependencies (for mysqlclient or pymysql)
|
# Install build dependencies
|
||||||
RUN apt-get update && apt-get install -y gcc python3-dev default-libmysqlclient-dev && rm -rf /var/lib/apt/lists/*
|
RUN apk add --no-cache gcc musl-dev python3-dev mariadb-dev libffi-dev openssl-dev
|
||||||
|
|
||||||
# Copy dependencies
|
# Copy requirements and install
|
||||||
COPY requirements.txt ./
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
|
||||||
|
|
||||||
# Copy project files
|
# Copy application code
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Expose Flask port
|
# 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
|
EXPOSE 5000
|
||||||
|
|
||||||
# Environment (set via docker-compose)
|
CMD ["flask", "run"]
|
||||||
ENV FLASK_ENV=production
|
|
||||||
|
|
||||||
# Start the Flask app
|
|
||||||
CMD ["python", "run.py"]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user