diff --git a/main_dc/yalarba/easySite/easySite/Dockerfile b/main_dc/yalarba/easySite/easySite/Dockerfile index 691159c..49dfdf3 100644 --- a/main_dc/yalarba/easySite/easySite/Dockerfile +++ b/main_dc/yalarba/easySite/easySite/Dockerfile @@ -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"] \ No newline at end of file +CMD ["node", ".output/server/index.mjs"] \ No newline at end of file