# Простой Dockerfile для быстрой первой сборки # Без многоступенчатой сборки - быстрее, но больше размер FROM node:18-alpine # Устанавливаем необходимые пакеты RUN apk add --no-cache \ libc6-compat \ openssl WORKDIR /app # Копируем package.json и yarn.lock COPY nextjs_space/package.json nextjs_space/yarn.lock ./ # Оптимизация: пропускаем ненужные бинарники ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true ENV CYPRESS_INSTALL_BINARY=0 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ENV NEXT_TELEMETRY_DISABLED=1 # Устанавливаем ВСЕ зависимости (нужны для сборки) # --ignore-scripts: пропускаем postinstall скрипты (компиляцию нативных модулей) # Это ускоряет установку в 10-20 раз! RUN yarn install --network-timeout 300000 --ignore-scripts # Копируем остальные файлы COPY nextjs_space/ ./ # Генерируем Prisma Client RUN npx prisma generate # Переменные окружения для сборки ARG NEXT_PUBLIC_SITE_URL ENV NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL:-http://localhost:3000} ENV NODE_ENV=production # Собираем приложение RUN yarn build # Удаляем dev-зависимости после сборки (экономия места) RUN yarn install --production --ignore-scripts --network-timeout 300000 # Создаем пользователя для безопасности RUN addgroup --system --gid 1001 nodejs && \ adduser --system --uid 1001 nextjs # Меняем владельца файлов RUN chown -R nextjs:nodejs /app USER nextjs EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" # Запускаем приложение CMD ["yarn", "start"]