Files
global_it24_landing/Dockerfile.simple

66 lines
2.4 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
# Отключаем опциональные зависимости (которые могут компилироваться долго)
ENV SKIP_OPTIONALS=1
# Используем предсобранные бинарники для native modules
ENV npm_config_build_from_source=false
# Устанавливаем ВСЕ зависимости (Prisma постinstall запустится автоматически)
# Используем более короткий timeout и retry
RUN yarn install --network-timeout 120000 --network-concurrency 5
# Копируем остальные файлы
COPY nextjs_space/ ./
# Проверяем, что Prisma Client был сгенерирован
RUN test -d node_modules/.prisma/client || (echo "ERROR: Prisma Client not generated!" && exit 1)
# Переменные окружения для сборки
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"]