From 4eef281b15847f4df78d24b2573de40c3e492c6b Mon Sep 17 00:00:00 2001 From: host Date: Fri, 24 Jul 2026 22:49:53 +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 | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 5914b38..09b5ef2 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -16,34 +16,30 @@ WORKDIR /app COPY . . RUN npm run build -# --- novnc: скачиваем noVNC напрямую с GitHub release --- +# --- runtime: nginx + артефакты Vite + noVNC (всё в одном stage) --- +# Качаем noVNC и распаковываем прямо здесь, одним RUN — проще и +# устойчивее к кэшу, чем отдельный stage + COPY. +FROM nginx:1.27-alpine + +ARG NOVNC_VERSION=1.4.0 + +# Установка curl ради скачивания, потом удаляем чтобы не раздувать образ. # BusyBox tar в Alpine не умеет читать gzip из stdin-пайпа, поэтому # сначала скачиваем архив в файл, потом распаковываем с явным -z. -FROM alpine:3.20 AS novnc -ARG NOVNC_VERSION=1.4.0 RUN apk add --no-cache curl \ && curl -fsSL -o /tmp/novnc.tar.gz \ "https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz" \ - && mkdir -p /out \ - && tar -xzf /tmp/novnc.tar.gz --strip-components=1 -C /out \ + && mkdir -p /usr/share/nginx/html/novnc \ + && tar -xzf /tmp/novnc.tar.gz --strip-components=1 -C /usr/share/nginx/html/novnc \ && rm /tmp/novnc.tar.gz \ && apk del curl -# --- runtime: nginx + артефакты Vite + noVNC --- -FROM nginx:1.27-alpine - # Конфигурация nginx. COPY nginx.conf /etc/nginx/conf.d/default.conf # Собранный фронтенд. COPY --from=build /app/dist /usr/share/nginx/html -# noVNC: копируем из отдельного novnc-stage в /usr/share/nginx/html/novnc/. -# Берём только нужные подпапки (lib + package.json), чтобы не раздувать образ -# лишними тестами, докой и CI-скриптами из upstream-репозитория. -COPY --from=novnc /out/lib /usr/share/nginx/html/novnc/lib -COPY --from=novnc /out/package.json /usr/share/nginx/html/novnc/package.json - # В нашем nginx.conf прописан listen 5173 — порт публикует compose. EXPOSE 5173