diff --git a/frontend/Dockerfile b/frontend/Dockerfile index b21c17e..40381fd 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,7 +1,4 @@ -# --- deps: установка зависимостей в отдельный stage --- -# node_modules нужен и для Vite-сборки, и для runtime (там лежит noVNC). -# Выносим установку в отдельный stage, чтобы из него можно было копировать -# node_modules и в build, и в runtime независимо. +# --- deps: устанавливаем только React-зависимости --- FROM node:20-alpine AS deps WORKDIR /app @@ -14,25 +11,35 @@ RUN if [ -f package-lock.json ]; then \ fi # --- build: Vite-сборка поверх deps --- -# Наследуемся от deps, чтобы node_modules был доступен. FROM deps AS build WORKDIR /app COPY . . RUN npm run build -# --- runtime: nginx + собранный фронтенд + noVNC из node_modules --- +# --- novnc: скачиваем noVNC напрямую с GitHub release --- +# Делаем в отдельном легковесном stage, чтобы не тянуть curl в runtime-образ. +FROM alpine:3.20 AS novnc +ARG NOVNC_VERSION=1.4.0 +RUN apk add --no-cache curl \ + && mkdir -p /out \ + && curl -fsSL "https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz" \ + | tar -xz -C /out/ --strip-components=1 \ + && apk del curl + +# --- runtime: nginx + артефакты Vite + noVNC --- FROM nginx:1.27-alpine -# Заменяем дефолтную конфигурацию на нашу. +# Конфигурация nginx. COPY nginx.conf /etc/nginx/conf.d/default.conf -# Артефакты Vite. +# Собранный фронтенд. COPY --from=build /app/dist /usr/share/nginx/html -# noVNC — UMD/IIFE-библиотека, грузится через