Files
Proxmox-VPS-Panel/frontend/Dockerfile
T
2026-07-24 22:40:07 +03:00

42 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# --- deps: установка зависимостей в отдельный stage ---
# node_modules нужен и для Vite-сборки, и для runtime (там лежит noVNC).
# Выносим установку в отдельный stage, чтобы из него можно было копировать
# node_modules и в build, и в runtime независимо.
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json* ./
# npm ci требует lock-файл; если его нет — fallback на npm install.
RUN if [ -f package-lock.json ]; then \
npm ci --no-audit --no-fund; \
else \
npm install --no-audit --no-fund; \
fi
# --- build: Vite-сборка поверх deps ---
# Наследуемся от deps, чтобы node_modules был доступен.
FROM deps AS build
WORKDIR /app
COPY . .
RUN npm run build
# --- runtime: nginx + собранный фронтенд + noVNC из node_modules ---
FROM nginx:1.27-alpine
# Заменяем дефолтную конфигурацию на нашу.
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Артефакты Vite.
COPY --from=build /app/dist /usr/share/nginx/html
# noVNC — UMD/IIFE-библиотека, грузится через <script src="/novnc/rfb.js">.
# Копируем всю папку lib (rfb.js + зависимости webutil, base64, pako и т.п.),
# чтобы относительные require() внутри noVNC работали корректно.
COPY --from=deps /app/node_modules/@novnc/novnc/lib /usr/share/nginx/html/novnc
# В нашем nginx.conf прописан listen 5173 — порт публикует compose.
EXPOSE 5173
HEALTHCHECK --interval=15s --timeout=5s --retries=3 \
CMD wget -q --spider http://localhost:5173/ || exit 1