74 lines
2.7 KiB
Docker
74 lines
2.7 KiB
Docker
# Простой 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 test -d node_modules/.prisma/client && \
|
||
test -f node_modules/.prisma/client/index.js && \
|
||
test -f node_modules/@prisma/client/index.js && \
|
||
echo "✅ Prisma Client готов к работе"
|
||
|
||
# Переменные окружения для сборки
|
||
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"]
|