Ctrl K
ComunidadGuías…

Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
FROM node:22-slim@sha256:53ada149d435c38b14476cb57e4a7da73c15595aba79bd6971b547ceb6d018bf AS frontend-build

WORKDIR /build

COPY package*.json ./
RUN npm ci

COPY frontend/ ./frontend/
COPY app/static/ ./app/static/
RUN npm run build:motion

FROM python:3.12-slim@sha256:423ed6ab25b1921a477529254bfeeabf5855151dc2c3141699a1bfc852199fbf

WORKDIR /app

RUN groupadd --system --gid 1000 kiwiki \
    && useradd --system --uid 1000 --gid kiwiki --home-dir /app --shell /usr/sbin/nologin kiwiki \
    && mkdir -p /data \
    && chown -R kiwiki:kiwiki /app /data

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY app/ ./app/
COPY --from=frontend-build /build/app/static/kiwiki-motion.bundle.js ./app/static/kiwiki-motion.bundle.js
RUN chown -R kiwiki:kiwiki /app

ENV KIWIKI_DATA_DIR=/data
ENV KIWIKI_BASE_URL="http://localhost:8080"
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

EXPOSE 8080

USER kiwiki

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD ["python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/livez', timeout=2)"]

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]