Ctrl K
ComunidadGuías…

Dockerfile

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

Archivo original ↗Preguntar a KiBot
# syntax=docker/dockerfile:1.7

FROM node:22.23.1-alpine AS frontend-build
WORKDIR /workspace/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build

FROM python:3.13-slim AS backend-base
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PATH=/opt/venv/bin:$PATH
RUN python -m venv /opt/venv
WORKDIR /workspace/backend
COPY backend/requirements.lock backend/requirements-dev.lock ./

FROM backend-base AS development
RUN pip install --no-cache-dir --require-hashes -r requirements-dev.lock
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload", "--no-proxy-headers"]

FROM backend-base AS backend-production
RUN pip install --no-cache-dir --require-hashes -r requirements.lock

FROM python:3.13-slim AS production
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PATH=/opt/venv/bin:$PATH \
    HERMES_STATIC_DIR=/app/static
RUN groupadd --system hermes && useradd --system --gid hermes --home /app hermes
COPY --from=backend-production /opt/venv /opt/venv
WORKDIR /app
COPY --chown=hermes:hermes backend/ ./
COPY --from=frontend-build --chown=hermes:hermes /workspace/frontend/dist/frontend/browser ./static
USER hermes
EXPOSE 8000
CMD ["sh", "-c", "alembic upgrade head && exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --no-proxy-headers"]