infrasynth-backend-kit/Dockerfile
2026-08-28 14:38:47 -05:00

61 lines
1.6 KiB
Docker

FROM python:3.12-slim AS builder
WORKDIR /app
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && apt-get install --no-install-recommends -y \
build-essential \
libpq-dev \
libjpeg-dev \
zlib1g-dev \
libfreetype-dev \
liblcms2-dev \
libwebp-dev \
tcl8.6-dev \
tk8.6-dev \
libharfbuzz-dev \
libfribidi-dev \
libxcb1-dev
COPY pyproject.toml pyproject.toml
RUN --mount=type=cache,target=/root/.cache/pip \
pip install --upgrade pip setuptools wheel && \
pip install --no-deps --no-build-isolation pyproject.toml || true && \
pip install --no-build-isolation -e ".[dev]" || \
pip install --no-build-isolation .
FROM python:3.12-slim AS runtime
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && apt-get install --no-install-recommends -y \
libpq5 \
libjpeg62-turbo \
libfreetype6 \
liblcms2-2 \
libwebp7 \
libharfbuzz0b \
libfribidi0 \
&& rm -rf /var/lib/apt/lists/*
RUN groupadd -r app && useradd -r -g app -d /app -s /sbin/nologin app
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY . .
RUN chown -R app:app /app
USER app
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
EXPOSE 8000
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "4", "--timeout", "120"]