| # syntax=docker/dockerfile:1.6 |
|
|
| ############################ |
| # 1) Frontend build stage |
| ############################ |
| FROM node:20-alpine AS frontend-build |
| WORKDIR /app |
|
|
| RUN apk add --no-cache libc6-compat |
|
|
| # Copy frontend |
| COPY streaming-react-app/ ./ |
|
|
| # Install deps + build using the correct package manager |
| RUN set -eux; \ |
| if [ -f yarn.lock ]; then \ |
| corepack enable && yarn --frozen-lockfile && yarn build; \ |
| elif [ -f package-lock.json ]; then \ |
| npm ci && npm run build; \ |
| elif [ -f pnpm-lock.yaml ]; then \ |
| corepack enable && pnpm i --frozen-lockfile && pnpm build; \ |
| else \ |
| echo "Lockfile not found." && exit 1; \ |
| fi |
|
|
| ############################ |
| # 2) Backend build stage |
| ############################ |
| FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 AS backend-build |
| ENV DEBIAN_FRONTEND=noninteractive |
| WORKDIR /build |
|
|
| # System deps for building wheels + audio/video runtime deps (build stage) |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| python3.10 python3.10-venv python3-pip \ |
| git curl ca-certificates \ |
| build-essential pkg-config cmake \ |
| libsndfile1-dev \ |
| sox libsox-dev libsox-fmt-all \ |
| ffmpeg \ |
| libjpeg-dev libpng-dev \ |
| && rm -rf /var/lib/apt/lists |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |