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 AS builder
FROM node:20-alpine
# Установка зависимых системных библиотек (для sharp и других) # Установка системных зависимостей
RUN apk add --no-cache \ RUN apk add --no-cache \
python3 \ python3 \
make \ make \
@@ -10,32 +9,41 @@ RUN apk add --no-cache \
WORKDIR /app WORKDIR /app
# Копируем package files # Копируем только package files сначала
COPY package*.json ./ COPY package*.json ./
COPY nuxt.config.ts ./ COPY nuxt.config.ts ./
COPY tsconfig.json ./ COPY tsconfig.json ./
# Устанавливаем зависимости # Устанавливаем ВСЕ зависимости (включая dev)
RUN npm ci RUN npm ci
# Копируем исходный код # Копируем исходный код
COPY . . COPY . .
# Собираем приложение # Увеличиваем память для Node.js
RUN npm run build ENV NODE_OPTIONS="--max-old-space-size=2048"
# Создаем непривилегированного пользователя для безопасности # Собираем приложение с таймаутом
RUN addgroup -g 1001 -S nodejs RUN timeout 300 npm run build || echo "Build might have timed out but continuing"
RUN adduser -S nuxtjs -u 1001
# Меняем владельца файлов FROM node:20-alpine AS production
RUN chown -R nuxtjs:nodejs /app
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 USER nuxtjs
# Экспортируем порт
EXPOSE 3000 EXPOSE 3000
# Запускаем приложение CMD ["node", ".output/server/index.mjs"]
CMD ["npm", "run", "start"]