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

49 lines
1.9 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: устанавливаем только React-зависимости ---
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 ---
FROM deps AS build
WORKDIR /app
COPY . .
RUN npm run build
# --- 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
# Собранный фронтенд.
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
HEALTHCHECK --interval=15s --timeout=5s --retries=3 \
CMD wget -q --spider http://localhost:5173/ || exit 1