2025-11-18 21:39:01 +00:00
|
|
|
FROM node:22-alpine AS node
|
2025-11-10 16:40:21 +00:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
COPY package*.json ./
|
|
|
|
|
|
|
|
|
|
RUN npm ci
|
|
|
|
|
|
2025-11-27 15:20:42 +00:00
|
|
|
COPY vite.config.ts .
|
|
|
|
|
COPY tsconfig.json .
|
|
|
|
|
COPY package*.json .
|
|
|
|
|
COPY src ./src
|
|
|
|
|
COPY index.html .
|
2025-11-10 16:40:21 +00:00
|
|
|
|
2025-11-18 21:39:01 +00:00
|
|
|
RUN npm run build
|
2025-11-10 16:40:21 +00:00
|
|
|
|
2025-12-10 14:37:06 +00:00
|
|
|
FROM python:3.12.0-slim AS python
|
2025-11-27 15:20:42 +00:00
|
|
|
|
|
|
|
|
LABEL org.opencontainers.image.title="Dynavera - An Agentic Approach to Domain-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
|
2025-11-18 21:39:01 +00:00
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install --no-install-recommends -y \
|
|
|
|
|
build-essential \
|
|
|
|
|
libpq-dev \
|
|
|
|
|
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2025-11-27 15:20:42 +00:00
|
|
|
COPY requirements/* .
|
|
|
|
|
RUN pip install --no-cache-dir -r prod.txt
|
2025-11-10 16:40:21 +00:00
|
|
|
|
2025-11-27 15:20:42 +00:00
|
|
|
COPY manage.py manage.py
|
|
|
|
|
COPY config config
|
|
|
|
|
COPY apps apps
|
2025-12-18 23:36:28 +00:00
|
|
|
COPY data data
|
2025-11-18 21:39:01 +00:00
|
|
|
|
|
|
|
|
COPY --from=node /app/build ./build
|
2025-11-10 16:40:21 +00:00
|
|
|
|
2025-11-27 15:20:42 +00:00
|
|
|
RUN mkdir -p /app/static
|
|
|
|
|
|
2025-11-18 21:39:01 +00:00
|
|
|
COPY ./compose/prod/start /start
|
2025-11-27 15:20:42 +00:00
|
|
|
RUN sed -i 's/\r$//g' /start && chmod +x /start
|
2025-11-10 16:40:21 +00:00
|
|
|
|
2025-11-18 21:39:01 +00:00
|
|
|
ENTRYPOINT ["/start"]
|