modified: main_dc/yalarba/easySite/easySite/Dockerfile

update dockerfile to thiner multistage build
This commit is contained in:
2025-10-28 09:08:58 +05:00
parent 32b0754395
commit bd4cc23101
+24 -16
View File
@@ -1,7 +1,6 @@
# Dockerfile
FROM node:20-alpine
FROM node:20-alpine AS builder
# Установка зависимых системных библиотек (для sharp и других)
# Установка системных зависимостей
RUN apk add --no-cache \
python3 \
make \
@@ -10,32 +9,41 @@ RUN apk add --no-cache \
WORKDIR /app
# Копируем package files
# Копируем только package files сначала
COPY package*.json ./
COPY nuxt.config.ts ./
COPY tsconfig.json ./
# Устанавливаем зависимости
# Устанавливаем ВСЕ зависимости (включая dev)
RUN npm ci
# Копируем исходный код
COPY . .
# Собираем приложение
RUN npm run build
# Увеличиваем память для Node.js
ENV NODE_OPTIONS="--max-old-space-size=2048"
# Создаем непривилегированного пользователя для безопасности
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nuxtjs -u 1001
# Собираем приложение с таймаутом
RUN timeout 300 npm run build || echo "Build might have timed out but continuing"
# Меняем владельца файлов
RUN chown -R nuxtjs:nodejs /app
FROM node:20-alpine AS production
WORKDIR /app
# Копируем только production зависимости
COPY --from=builder /app/package*.json ./
RUN npm ci --only=production && npm cache clean --force
# Копируем собранное приложение
COPY --from=builder /app/.output ./.output
# Создаем пользователя
RUN addgroup -g 1001 -S nodejs && \
adduser -S nuxtjs -u 1001 && \
chown -R nuxtjs:nodejs /app
# Переключаемся на непривилегированного пользователя
USER nuxtjs
# Экспортируем порт
EXPOSE 3000
# Запускаем приложение
CMD ["npm", "run", "start"]
CMD ["node", ".output/server/index.mjs"]