🐛 Исправление Docker сборки
🔧 Исправления: - Обновлена версия Node.js с 18 до 20 (поддержка NestJS 11+) - Исправлена установка зависимостей в builder stage (нужны dev зависимости для сборки) - Оптимизирована финальная стадия (только production зависимости) - Восстановлен файл stack.env.example - Использован --omit=dev вместо устаревшего --only=production ✅ Теперь Docker сборка должна работать корректно
This commit is contained in:
18
Dockerfile
18
Dockerfile
@ -1,5 +1,5 @@
|
|||||||
# Многоступенчатая сборка для оптимизации размера образа
|
# Многоступенчатая сборка для оптимизации размера образа
|
||||||
FROM node:18-alpine AS builder
|
FROM node:20-alpine AS builder
|
||||||
|
|
||||||
# Устанавливаем рабочую директорию
|
# Устанавливаем рабочую директорию
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@ -7,8 +7,8 @@ WORKDIR /app
|
|||||||
# Копируем файлы зависимостей
|
# Копируем файлы зависимостей
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|
||||||
# Устанавливаем зависимости
|
# Устанавливаем ВСЕ зависимости (включая dev для сборки)
|
||||||
RUN npm ci --only=production && npm cache clean --force
|
RUN npm ci && npm cache clean --force
|
||||||
|
|
||||||
# Копируем исходный код
|
# Копируем исходный код
|
||||||
COPY . .
|
COPY . .
|
||||||
@ -17,7 +17,7 @@ COPY . .
|
|||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Финальный образ
|
# Финальный образ
|
||||||
FROM node:18-alpine AS production
|
FROM node:20-alpine AS production
|
||||||
|
|
||||||
# Создаем пользователя для безопасности
|
# Создаем пользователя для безопасности
|
||||||
RUN addgroup -g 1001 -S nodejs
|
RUN addgroup -g 1001 -S nodejs
|
||||||
@ -26,10 +26,14 @@ RUN adduser -S nestjs -u 1001
|
|||||||
# Устанавливаем рабочую директорию
|
# Устанавливаем рабочую директорию
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Копируем зависимости из builder
|
# Копируем package files
|
||||||
COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules
|
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/dist ./dist
|
||||||
COPY --from=builder --chown=nestjs:nodejs /app/package*.json ./
|
|
||||||
|
|
||||||
# Устанавливаем пользователя
|
# Устанавливаем пользователя
|
||||||
USER nestjs
|
USER nestjs
|
||||||
|
57
stack.env.example
Normal file
57
stack.env.example
Normal 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
|
Reference in New Issue
Block a user