a80fdd9053
Deploy PROD / deploy (push) Successful in 4m32s
Przycisk w sali, ktory kazdy z wlasna kamera wlacza i wylacza sam, w trakcie spotkania. Pokazuje sie wylacznie osobie z wlaczona kamera, wiec uczestnik bez prawa publikacji obrazu nigdy go nie zobaczy. `@livekit/track-processors` wchodzi jako nowa zaleznosc, poza lista z CLAUDE.md: uzgodnione. Ladowany leniwie, bo ciagnie za soba MediaPipe: import statyczny doliczalby kilka MB do pakietu KAZDEGO wejscia na sale, takze uczestnikom bez kamery. Sprawdzone na zbudowanym pakiecie: MediaPipe siedzi w osobnym chunku, glowny pakiet nie urosl. Pliki modelu ida z WLASNEJ domeny, nie z CDN: instancja w sieci zamknietej ma miec rozmycie tak samo, a CSP nie musi dopuszczac obcych hostow. Model (244 kB) lezy w repozytorium, a zestaw WASM kopiuje sie przy budowaniu obrazu z `node_modules`: wazy kilkanascie MB i musi odpowiadac wersji pakietu, wiec w repozytorium puchlby w historii i po cichu rozjezdzal sie przy kazdej aktualizacji. Podmiany tla na obraz swiadomie NIE ma. Segmentacja obcina wlosy i dlonie przy slabym swietle, a kafelek wideo jest za maly, zeby cokolwiek na tle bylo czytelne. Reklama ma wlasne miejsce w banerach, ktore sa przy tym mierzone. `VideoConference` zostaje nietkniety: przycisk jest obok, wiec aktualizacja biblioteki nie wymaga odtwarzania niczego u nas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
43 lines
1.5 KiB
Docker
43 lines
1.5 KiB
Docker
# --- etap 1: build ---
|
|
FROM node:22-alpine AS build
|
|
WORKDIR /build
|
|
|
|
# najpierw manifesty, zeby warstwa z node_modules byla cache'owana
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
|
|
COPY . .
|
|
|
|
# frontend odpytuje backend przez wzgledny /api, ktory nginx proxuje dalej
|
|
ARG VITE_API_URL=/api
|
|
ENV VITE_API_URL=$VITE_API_URL
|
|
RUN npm run build
|
|
|
|
# Pliki MediaPipe do rozmycia tla, kopiowane Z ZAINSTALOWANEGO PAKIETU.
|
|
#
|
|
# DLACZEGO NIE Z REPOZYTORIUM
|
|
# ---------------------------------------------------------------------------
|
|
# Zestaw WASM wazy kilkanascie MB i musi odpowiadac wersji
|
|
# `@mediapipe/tasks-vision` wciagnietej przez `@livekit/track-processors`.
|
|
# Wrzucony do repozytorium puchlby w historii na zawsze, a przy aktualizacji
|
|
# pakietu rozjezdzalby sie po cichu: rozmycie przestaje dzialac, a nic tego
|
|
# nie sygnalizuje. Kopiowanie przy budowaniu wiaze pliki z wersja pakietu.
|
|
#
|
|
# DLACZEGO NIE Z CDN
|
|
# ---------------------------------------------------------------------------
|
|
# Domyslnie biblioteka pobiera je z jsdelivr i storage.googleapis.com.
|
|
# Instancja w sieci zamknietej nie miałaby wtedy rozmycia wcale, a CSP
|
|
# musialoby dopuszczac dwa obce hosty. Serwowanie z wlasnej domeny miesci sie
|
|
# w istniejacym `connect-src 'self'`.
|
|
RUN mkdir -p /build/dist/mediapipe && cp -r node_modules/@mediapipe/tasks-vision/wasm /build/dist/mediapipe/wasm
|
|
|
|
# --- etap 2: runtime ---
|
|
FROM nginx:1.27-alpine
|
|
|
|
COPY --from=build /build/dist /usr/share/nginx/html
|
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
|
|
EXPOSE 80
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|