diff --git a/Dockerfile b/Dockerfile index d88efa0..0602ed9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,49 +1,55 @@ -FROM node:20-alpine AS base +# ---------- Base ---------- + FROM node:18-bookworm-slim AS base -# ENV NPM_CONFIG_REGISTRY=https://mirror-npm.runflare.com - -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 - -FROM base AS deps -WORKDIR /temp-deps -COPY package*.json ./ -RUN npm install - -FROM base AS builder -WORKDIR /build -COPY . ./ -COPY --from=deps /temp-deps/node_modules ./node_modules -RUN npm run build -RUN npm install --omit=dev - - -FROM base AS runner -WORKDIR /app -ENV NUXT_TELEMETRY_DISABLED=1 - - -RUN addgroup -S appgroup && adduser -S appuser -G appgroup -RUN chown -R appuser:appgroup /app - -# COPY --from=builder --chown=appuser:appgroup /build/.nuxt ./.nuxt -# COPY --from=builder --chown=appuser:appgroup /build/static ./static -# COPY --from=builder --chown=appuser:appgroup /build/package.json ./ -# COPY --from=builder --chown=appuser:appgroup /build/node_modules/ ./node_modules/ -COPY --from=builder --chown=appuser:appgroup /build ./ - - -USER appuser - -# Set environment variables -ENV NODE_ENV=production -ENV PORT=3000 -ENV HOSTNAME="0.0.0.0" - - -EXPOSE 3000 - -# Start the Nuxt 2 app -CMD ["npm", "start"] + ENV NUXT_TELEMETRY_DISABLED=1 + + # Install timezone and build tools required by sharp/node-gyp + RUN apt-get update && apt-get install -y \ + tzdata \ + python3 \ + make \ + g++ \ + && rm -rf /var/lib/apt/lists/* + + ENV TZ=Asia/Tehran + + # ---------- Dependencies ---------- + FROM base AS deps + + WORKDIR /temp-deps + + COPY package*.json ./ + + RUN npm install + + # ---------- Build ---------- + FROM base AS builder + + WORKDIR /build + + COPY . . + + COPY --from=deps /temp-deps/node_modules ./node_modules + + RUN npm run build + + RUN npm prune --omit=dev + + # ---------- Runtime ---------- + FROM base AS runner + + WORKDIR /app + + ENV NODE_ENV=production + ENV HOST=0.0.0.0 + ENV PORT=3000 + + RUN groupadd -r appgroup && useradd -r -g appgroup appuser + + COPY --from=builder --chown=appuser:appgroup /build . + + USER appuser + + EXPOSE 3000 + + CMD ["npm", "start"] \ No newline at end of file