Обновление Dockerfile: замена pnpm на npm для установки зависимостей и сборки приложения, оптимизация этапов сборки и установки production зависимостей.

This commit is contained in:
Bivekich
2025-06-30 00:06:11 +03:00
parent f10036b674
commit 7838e2e60f

View File

@ -1,19 +1,15 @@
# Многоэтапная сборка для оптимизации размера образа # Многоэтапная сборка для оптимизации размера образа
FROM node:20-alpine AS base FROM node:20-alpine AS base
# Установка pnpm глобально
RUN npm install -g pnpm
# Этап установки зависимостей # Этап установки зависимостей
FROM base AS deps FROM base AS deps
WORKDIR /app WORKDIR /app
# Копируем файлы для установки зависимостей # Копируем файлы для установки зависимостей
COPY package*.json ./ COPY package*.json ./
COPY pnpm-lock.yaml* ./
# Устанавливаем зависимости # Устанавливаем все зависимости для сборки
RUN pnpm install --frozen-lockfile RUN npm ci
# Этап сборки # Этап сборки
FROM base AS builder FROM base AS builder
@ -24,7 +20,7 @@ COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# Собираем приложение # Собираем приложение
RUN pnpm run build RUN npm run build
# Финальный этап - production # Финальный этап - production
FROM base AS runner FROM base AS runner
@ -34,10 +30,14 @@ WORKDIR /app
RUN addgroup --system --gid 1001 nodejs RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 astro RUN adduser --system --uid 1001 astro
# Копируем package.json для установки production зависимостей
COPY --from=builder --chown=astro:nodejs /app/package*.json ./
# Устанавливаем только production зависимости
RUN npm ci --only=production && npm cache clean --force
# Копируем собранное приложение # Копируем собранное приложение
COPY --from=builder --chown=astro:nodejs /app/dist ./dist COPY --from=builder --chown=astro:nodejs /app/dist ./dist
COPY --from=builder --chown=astro:nodejs /app/node_modules ./node_modules
COPY --from=builder --chown=astro:nodejs /app/package.json ./package.json
# Переключаемся на пользователя astro # Переключаемся на пользователя astro
USER astro USER astro