From a872bc08190c15a6b24112b058dbfc16a9c7b477 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 22 Jun 2026 20:21:51 +0330 Subject: [PATCH] opt dckr --- .dockerignore | 13 +++++++ Dockerfile | 95 +++++++++++++-------------------------------------- 2 files changed, 37 insertions(+), 71 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a31a6ff --- /dev/null +++ b/.dockerignore @@ -0,0 +1,13 @@ +node_modules +.next +.git +.gitignore +*.md +.env* +npm-debug.log* +.DS_Store +coverage +.cursor +.idea +.vscode +*.log diff --git a/Dockerfile b/Dockerfile index 639a854..8ab03b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,104 +1,57 @@ -# ------------------------ -# Base image -# ------------------------ -FROM node:22-alpine AS base - -RUN apk add --no-cache tzdata \ - && cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime \ - && echo "Asia/Tehran" > /etc/timezone - -WORKDIR /app +# syntax=docker/dockerfile:1 # ------------------------ -# Dependencies stage +# Dependencies # ------------------------ -FROM base AS deps +FROM node:22-alpine AS deps RUN apk add --no-cache libc6-compat git -COPY package*.json ./ +WORKDIR /app -RUN npm ci +COPY package.json package-lock.json ./ + +RUN --mount=type=cache,target=/root/.npm \ + npm ci # ------------------------ -# Builder stage +# Builder # ------------------------ -FROM base AS builder +FROM node:22-alpine AS builder WORKDIR /build COPY --from=deps /app/node_modules ./node_modules - COPY . . -RUN NEXT_TELEMETRY_DISABLED=1 npm run build -- --no-lint || true +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN npm run build # ------------------------ -# Runner stage (production) +# Runner (production) # ------------------------ -FROM base AS runner +FROM node:22-alpine AS runner WORKDIR /app -ENV NODE_ENV=production -ENV NEXT_TELEMETRY_DISABLED=1 -ENV PORT=3000 -ENV HOSTNAME="0.0.0.0" +ENV NODE_ENV=production \ + NEXT_TELEMETRY_DISABLED=1 \ + PORT=3000 \ + HOSTNAME=0.0.0.0 \ + TZ=Asia/Tehran -RUN addgroup -S appgroup && adduser -S appuser -G appgroup - -RUN mkdir .next && chown appuser:appgroup .next +RUN addgroup -S appgroup \ + && adduser -S appuser -G appgroup \ + && mkdir .next \ + && chown appuser:appgroup .next COPY --from=builder --chown=appuser:appgroup /build/.next/standalone ./ COPY --from=builder --chown=appuser:appgroup /build/.next/static ./.next/static COPY --from=builder --chown=appuser:appgroup /build/public ./public -COPY --from=builder --chown=appuser:appgroup /build/package.json ./package.json USER appuser -# expose port EXPOSE 3000 CMD ["node", "server.js"] - - -# FROM node:22-alpine AS base - -# RUN apk add --no-cache tzdata && \ -# cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && \ -# echo "Asia/Tehran" > /etc/timezone - -# WORKDIR /app - -# FROM base AS deps -# RUN apk add --no-cache libc6-compat git -# COPY package*.json ./ -# RUN npm ci --only=production --ignore-scripts - -# FROM base AS builder -# WORKDIR /build -# COPY --from=deps /app/node_modules ./node_modules -# COPY . . -# RUN npm run build && npm ci --only=production --ignore-scripts - -# FROM base AS runner -# WORKDIR /app - -# ENV NODE_ENV=production -# ENV NEXT_TELEMETRY_DISABLED=1 - -# RUN addgroup -S appgroup && adduser -S appuser -G appgroup -# RUN mkdir .next && chown appuser:appgroup .next - -# COPY --from=builder --chown=appuser:appgroup /build/.next/standalone ./ -# COPY --from=builder --chown=appuser:appgroup /build/.next/static ./.next/static -# COPY --from=builder --chown=appuser:appgroup /build/public ./public -# COPY --from=builder --chown=appuser:appgroup /build/package.json ./package.json - -# USER appuser - -# EXPOSE 3000 -# ENV PORT=3000 -# ENV HOSTNAME="0.0.0.0" - -# CMD ["node", "server.js"] \ No newline at end of file