Files
store-platform/Dockerfile
abakumov-a-a d6ea4314b0 add docker
2025-12-11 21:47:42 +03:00

55 lines
1.9 KiB
Docker
Raw Permalink 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.

# Multi-stage build для бэкенда
# Stage 1: Сборка зависимостей
FROM node:18-alpine AS dependencies
WORKDIR /app
# Копируем файлы зависимостей
COPY package*.json ./
# Устанавливаем зависимости
RUN npm ci --only=production && npm cache clean --force
# Stage 2: Production образ
FROM node:18-alpine
# Устанавливаем wget для healthcheck
RUN apk add --no-cache wget
WORKDIR /app
# Создаем пользователя для запуска приложения (безопасность)
RUN addgroup -g 1001 -S nodejs && \
adduser -S nodejs -u 1001
# Копируем зависимости из stage dependencies
COPY --from=dependencies --chown=nodejs:nodejs /app/node_modules ./node_modules
# Копируем исходный код
COPY --chown=nodejs:nodejs . .
# Создаем директории для логов и сертификатов
RUN mkdir -p logs tsl && \
chown -R nodejs:nodejs logs tsl
# Переключаемся на пользователя nodejs
USER nodejs
# Открываем порты (HTTP и HTTPS)
# Порты можно настроить через переменные окружения WEB_HTTP_PORT и WEB_HTTPS_PORT
EXPOSE 80 443
# Переменные окружения по умолчанию
# Все переменные можно переопределить через docker-compose или docker run
ENV NODE_ENV=production \
LOG_LEVEL=info \
STDOUT_LOG_LEVEL=info
# Healthcheck для проверки работоспособности
# Используем wget или curl (должны быть установлены в alpine)
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:80/health || exit 1
# Запускаем приложение
CMD ["node", "app.js"]