Files
global_it24_landing/Dockerfile.simple

75 lines
2.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.
# Простой 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 ./
# Копируем prisma схему (нужна для генерации клиента)
COPY nextjs_space/prisma ./prisma
# Оптимизация: отключаем проблемные бинарники
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV NEXT_TELEMETRY_DISABLED=1
# ШАГ 1: Устанавливаем ВСЕ зависимости БЕЗ postinstall скриптов (быстро!)
RUN yarn install --ignore-scripts --network-timeout 300000 && \
echo "✅ Зависимости установлены (без компиляции)"
# ШАГ 2: Устанавливаем ТОЛЬКО Prisma С postinstall (для скачивания движков)
# Это перезапишет установку из шага 1, но уже с движками
RUN yarn add prisma@6.7.0 @prisma/client@6.7.0 --exact --network-timeout 300000 && \
echo "✅ Prisma установлен с бинарными движками"
# Копируем остальные файлы
COPY nextjs_space/ ./
# ШАГ 3: Генерируем Prisma Client
RUN npx prisma generate --schema=./prisma/schema.prisma && \
echo "✅ Prisma Client сгенерирован"
# ОТЛАДКА: Посмотрим что создалось
RUN echo "=== Проверка node_modules/.prisma/client ===" && \
ls -la node_modules/.prisma/ || echo "Папка .prisma не существует" && \
ls -la node_modules/.prisma/client/ || echo "Папка client не существует" && \
echo "=== Проверка node_modules/@prisma/client ===" && \
ls -la node_modules/@prisma/client/ | head -20
# Переменные окружения для сборки
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 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"]