50 lines
1.2 KiB
Docker
50 lines
1.2 KiB
Docker
FROM python:3.12-slim AS builder
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1
|
|
|
|
WORKDIR /app
|
|
|
|
ARG NUITKA_JOBS=1
|
|
ARG NUITKA_LOW_MEMORY=1
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends build-essential patchelf \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY requirements.txt ./
|
|
RUN pip install --no-cache-dir -r requirements.txt \
|
|
&& pip install --no-cache-dir nuitka ordered-set zstandard
|
|
|
|
COPY . .
|
|
|
|
# Build a standalone binary with all required templates/static/data assets.
|
|
# Defaults are tuned for lower RAM pressure to avoid host crashes.
|
|
RUN set -eu; \
|
|
EXTRA_FLAGS=""; \
|
|
if [ "$NUITKA_LOW_MEMORY" = "1" ]; then \
|
|
EXTRA_FLAGS="--low-memory --lto=no"; \
|
|
fi; \
|
|
python -m nuitka \
|
|
--standalone \
|
|
--follow-imports \
|
|
--assume-yes-for-downloads \
|
|
--jobs="$NUITKA_JOBS" \
|
|
--remove-output \
|
|
--include-data-dir=templates=templates \
|
|
--include-data-dir=static=static \
|
|
--include-data-dir=data=data \
|
|
--output-dir=build \
|
|
$EXTRA_FLAGS \
|
|
main.py
|
|
|
|
FROM python:3.12-slim AS runtime
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/build/main.dist ./
|
|
|
|
EXPOSE 4999
|
|
|
|
CMD ["./main.bin"]
|