React 19 + TypeScript client built with Vite. Zustand for local state, react-oidc-context for the login flow, a SignalR connection for chat and presence events, and LiveKit's React components for voice/video calls.
29 lines
853 B
Docker
29 lines
853 B
Docker
# Build context: frontend/ (docker compose -f deploy/compose.yml --profile apps build)
|
|
FROM node:24-alpine AS build
|
|
WORKDIR /src
|
|
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
|
|
COPY . .
|
|
|
|
# Vite inlines VITE_* variables at build time, so they have to be build args, not
|
|
# runtime environment variables — see deploy/compose.yml's web service.
|
|
ARG VITE_API_BASE_URL
|
|
ARG VITE_AUTH_AUTHORITY
|
|
ARG VITE_AUTH_CLIENT_ID
|
|
ARG VITE_AUTH_REDIRECT_URI
|
|
ARG VITE_LIVEKIT_URL
|
|
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL \
|
|
VITE_AUTH_AUTHORITY=$VITE_AUTH_AUTHORITY \
|
|
VITE_AUTH_CLIENT_ID=$VITE_AUTH_CLIENT_ID \
|
|
VITE_AUTH_REDIRECT_URI=$VITE_AUTH_REDIRECT_URI \
|
|
VITE_LIVEKIT_URL=$VITE_LIVEKIT_URL
|
|
|
|
RUN npm run build
|
|
|
|
FROM nginx:alpine AS runtime
|
|
COPY --from=build /src/dist /usr/share/nginx/html
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
EXPOSE 3100
|