🐛 Исправление Docker сборки

🔧 Исправления:
- Обновлена версия Node.js с 18 до 20 (поддержка NestJS 11+)
- Исправлена установка зависимостей в builder stage (нужны dev зависимости для сборки)
- Оптимизирована финальная стадия (только production зависимости)
- Восстановлен файл stack.env.example
- Использован --omit=dev вместо устаревшего --only=production

 Теперь Docker сборка должна работать корректно
This commit is contained in:
Bivekich
2025-06-26 21:47:03 +03:00
parent be7ff53094
commit b7bf3ab12c
2 changed files with 68 additions and 7 deletions

View File

@ -1,5 +1,5 @@
# Многоступенчатая сборка для оптимизации размера образа
FROM node:18-alpine AS builder
FROM node:20-alpine AS builder
# Устанавливаем рабочую директорию
WORKDIR /app
@ -7,8 +7,8 @@ WORKDIR /app
# Копируем файлы зависимостей
COPY package*.json ./
# Устанавливаем зависимости
RUN npm ci --only=production && npm cache clean --force
# Устанавливаем ВСЕ зависимости (включая dev для сборки)
RUN npm ci && npm cache clean --force
# Копируем исходный код
COPY . .
@ -17,7 +17,7 @@ COPY . .
RUN npm run build
# Финальный образ
FROM node:18-alpine AS production
FROM node:20-alpine AS production
# Создаем пользователя для безопасности
RUN addgroup -g 1001 -S nodejs
@ -26,10 +26,14 @@ RUN adduser -S nestjs -u 1001
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем зависимости из builder
COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules
# Копируем package files
COPY package*.json ./
# Устанавливаем только production зависимости
RUN npm ci --omit=dev && npm cache clean --force
# Копируем собранное приложение из builder
COPY --from=builder --chown=nestjs:nodejs /app/dist ./dist
COPY --from=builder --chown=nestjs:nodejs /app/package*.json ./
# Устанавливаем пользователя
USER nestjs

57
stack.env.example Normal file
View File

@ -0,0 +1,57 @@
# Пример файла переменных окружения для деплоя
# Скопируйте этот файл в stack.env и заполните реальными значениями
# =================================
# ОСНОВНЫЕ НАСТРОЙКИ ПРИЛОЖЕНИЯ
# =================================
# Среда выполнения (development, production)
NODE_ENV=production
# Порт для приложения
PORT=3000
# Часовой пояс
TZ=Europe/Moscow
# =================================
# БАЗА ДАННЫХ (ОБЯЗАТЕЛЬНО)
# =================================
# URL подключения к PostgreSQL базе данных
# Формат: postgresql://username:password@host:port/database
DATABASE_URL=postgresql://your_username:your_password@your_host:5432/your_database
# Максимальное количество подключений к БД
MAX_CONNECTIONS=10
# =================================
# TELEGRAM BOT (ОБЯЗАТЕЛЬНО)
# =================================
# Токен Telegram бота (получить у @BotFather)
TELEGRAM_BOT_TOKEN=your_bot_token_here
# =================================
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
# =================================
# Уровень логирования (error, warn, info, debug)
LOG_LEVEL=info
# =================================
# ИНСТРУКЦИИ ПО ЗАПОЛНЕНИЮ
# =================================
# 1. DATABASE_URL:
# - Замените your_username, your_password, your_host, your_database
# - Пример: postgresql://myuser:mypass@db.example.com:5432/mydb
# - Для облачных БД часто требуется SSL, это настроено автоматически
# 2. TELEGRAM_BOT_TOKEN:
# - Создайте бота через @BotFather в Telegram
# - Скопируйте полученный токен
# - Пример: 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
# 3. После заполнения переименуйте файл в stack.env:
# mv stack.env.example stack.env