From 71de8fda1370f19812b718f850f5a7eae7884f5e Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 25 Jun 2026 19:28:58 +0330 Subject: [PATCH] opy docker --- .dockerignore | 17 ++++++++++++ Dockerfile | 74 +++++++++++++++++++++++++-------------------------- 2 files changed, 54 insertions(+), 37 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..bcad144 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +node_modules +dist +coverage +.git +.github +.env +.env.* +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.vscode +.idea +.DS_Store +*.md +Dockerfile* +docker-compose* diff --git a/Dockerfile b/Dockerfile index 80f2c99..30ca617 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,48 +1,48 @@ +# ----------------------- +# Base image +# ----------------------- FROM node:18-alpine AS base - -# Install tzdata to support timezone settings -RUN apk add --no-cache tzdata - -# Set the timezone to Asia/Tehran -RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone - - -# Stage 2: Dependencies -FROM base AS deps -WORKDIR /temp-deps -COPY package*.json ./ -RUN npm install - -# Stage 3: Build stage -FROM base AS builder -WORKDIR /build -COPY . ./ -COPY --from=deps /temp-deps/node_modules ./node_modules -RUN npm run build - -# Stage 4: Production image -FROM base AS runner -RUN addgroup -S appgroup && adduser -S appuser -G appgroup WORKDIR /app -# COPY --from=builder /build ./ +# ----------------------- +# Install dependencies +# ----------------------- +FROM base AS deps +WORKDIR /deps + +COPY package*.json ./ +RUN npm ci + +# ----------------------- +# Build stage +# ----------------------- +FROM base AS builder +WORKDIR /build + +COPY . . + +# copy deps only (faster + deterministic) +COPY --from=deps /deps/node_modules ./node_modules + +RUN npm run build + +# ----------------------- +# Production runtime +# ----------------------- +FROM node:18-alpine AS runner + +WORKDIR /app + +# create non-root user +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +# only copy what is needed at runtime COPY --from=builder /build/.output ./.output COPY package*.json ./ -RUN chown -R appuser:appgroup /app - USER appuser ENV NODE_ENV=production - EXPOSE 3000 -# Start the Nuxt app -# CMD ["npm", "start"] -CMD ["node", ".output/server/index.mjs"] - - - - - - +CMD ["node", ".output/server/index.mjs"] \ No newline at end of file