uchill/excalidraw-server/Dockerfile

50 lines
1.2 KiB
Docker

# Multi-stage build для production
FROM node:18-alpine AS builder
WORKDIR /app
# Копируем package.json и patches
COPY package*.json ./
COPY patches ./patches/
# Устанавливаем зависимости
RUN npm ci
# Гарантированно применяем патчи
RUN npx patch-package
# Копируем исходный код
COPY . .
# Собираем приложение
ENV NODE_ENV=production
RUN npm run build
# Production stage
FROM node:18-alpine AS production
WORKDIR /app
ENV NODE_ENV=production
# Копируем собранное приложение (standalone mode)
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
# Создаём пустую директорию public (если её нет в проекте, Next.js может её использовать)
RUN mkdir -p ./public
# Создаем непривилегированного пользователя
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 nextjs && \
chown -R nextjs:nodejs /app
USER nextjs
EXPOSE 3001
ENV PORT=3001
ENV HOSTNAME="0.0.0.0"
CMD ["node", "server.js"]