FROM node:22-alpine AS node

WORKDIR /app

COPY package*.json ./

RUN npm ci

COPY vite.config.ts .
COPY tsconfig.json .
COPY package*.json .
COPY src ./src
COPY index.html .

RUN npm run build

FROM python:3.12.0-slim AS python

LABEL org.opencontainers.image.title="Dynavera - An Agentic Approach to Role-Specific Trainers"
LABEL org.opencontainers.image.source="https://git.cs.bham.ac.uk/projects-2025-26/vxn217"
LABEL org.opencontainers.image.description="Dynavera (Final Year Project)"

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /app

RUN apt-get update && apt-get install --no-install-recommends -y \
	build-essential \
	libpq-dev \
	wait-for-it \
	&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
	&& rm -rf /var/lib/apt/lists/*

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

COPY manage.py manage.py
COPY config config
COPY apps apps
COPY data data

COPY --from=node /app/build ./build

RUN mkdir -p /app/static

COPY ./compose/prod/django/start /start
RUN sed -i 's/\r$//g' /start && chmod +x /start

ENTRYPOINT ["/start"]