Оптимизирован Dockerfile: разделены prod и dev зависимости

This commit is contained in:
DeepAgent
2025-10-27 15:01:47 +00:00
parent f7457931ab
commit f7eb6ddb1a

View File

@@ -1,25 +1,35 @@
# Многоступенчатая сборка для оптимизации размера образа
# Стадия 1: Установка зависимостей
FROM node:18-alpine AS deps
RUN apk add --no-cache libc6-compat openssl python3 make g++
# Стадия 1: Установка ТОЛЬКО production зависимостей (быстро)
FROM node:18-alpine AS prod-deps
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
# Копируем файлы зависимостей
COPY nextjs_space/package.json nextjs_space/yarn.lock ./
# Настройки для ускорения компиляции
ENV NODE_ENV=development
ENV NODE_ENV=production
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true
ENV SKIP_NODE_SASS_TESTS=true
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# Устанавливаем все зависимости одним вызовом
RUN yarn install --immutable --network-timeout 600000
# Только production зависимости - БЫСТРО!
RUN yarn install --production --frozen-lockfile --network-timeout 300000
# Стадия 2: Сборка приложения
# Стадия 2: Установка ВСЕХ зависимостей для сборки (медленно, но с кешем)
FROM node:18-alpine AS deps
RUN apk add --no-cache libc6-compat openssl python3 make g++
WORKDIR /app
COPY nextjs_space/package.json nextjs_space/yarn.lock ./
ENV NODE_ENV=development
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# Все зависимости для сборки (с кешем из предыдущей стадии)
RUN yarn install --frozen-lockfile --network-timeout 300000
# Стадия 3: Сборка приложения
FROM node:18-alpine AS builder
RUN apk add --no-cache libc6-compat openssl
WORKDIR /app
@@ -43,7 +53,7 @@ ENV NEXT_TELEMETRY_DISABLED=1
# Собираем приложение
RUN yarn build
# Стадия 3: Production образ
# Стадия 4: Production образ (runtime)
FROM node:18-alpine AS runner
WORKDIR /app