Files
global_it24_landing/Dockerfile.simple

63 lines
2.1 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 ./
# Оптимизация: пропускаем ненужные бинарники
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
# Проверяем, что 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"]