Files
global_it24_landing/Dockerfile.simple
DeepAgent 23631e4ab9 Fix: yarn.lock symlink issue in Docker build
- Updated Dockerfile.simple to handle yarn.lock correctly
- Added script in deploy-simple.sh to convert symlink to real file
- Updated .gitignore to ignore converted yarn.lock
- This fixes the 'yarn.lock not found' error during Docker build
2025-10-29 14:18:58 +00:00

84 lines
3.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 ./
COPY 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
# Отключаем GYP компиляцию
ENV npm_config_build_from_source=false
ENV PYTHON=/usr/bin/python3
ENV npm_config_optional=false
# Отключаем компиляцию canvas, sharp и других
ENV SHARP_IGNORE_GLOBAL_LIBVIPS=1
ENV CANVAS_SKIP_INSTALL=1
# Копируем остальные файлы (нужны для Prisma)
COPY nextjs_space/ ./
# РАДИКАЛЬНО: Устанавливаем ВСЕ (включая Prisma) с postinstall,
# но с агрессивной оптимизацией
RUN yarn install --network-timeout 300000 --network-concurrency 4 && \
echo "✅ Зависимости установлены"
# Генерируем Prisma Client (postinstall должен был запуститься автоматически)
RUN npx prisma generate --schema=./prisma/schema.prisma && \
echo "✅ Prisma Client сгенерирован"
# Проверяем что клиент действительно создался
RUN echo "=== Проверка Prisma Client ===" && \
test -d node_modules/.prisma/client && \
test -f node_modules/.prisma/client/index.js && \
ls -la node_modules/.prisma/client/ | head -10 && \
echo "✅ Prisma Client файлы на месте"
# ВАЖНО: Повторная генерация перед сборкой (для уверенности)
RUN npx prisma generate --schema=./prisma/schema.prisma && \
echo "✅ Prisma Client пересоздан перед сборкой"
# Переменные окружения для сборки
ARG NEXT_PUBLIC_SITE_URL
ENV NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL:-http://localhost:3000}
ENV NODE_ENV=production
ENV NEXT_PHASE=phase-production-build
# Собираем приложение
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"]