From 1da25bd8c223db6b1dd5427971c3d61d9bf34473 Mon Sep 17 00:00:00 2001 From: host Date: Fri, 24 Jul 2026 22:43:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/Dockerfile | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) 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-библиотека, грузится через