11# Stage 1: Dependencies
2- FROM node:20 -alpine AS deps
2+ FROM node:22 -alpine AS deps
33WORKDIR /app
44
55# Install dependencies based on the preferred package manager
66COPY package.json package-lock.json* ./
77RUN npm ci --only=production && npm cache clean --force
88
99# Stage 2: Build
10- FROM node:20 -alpine AS builder
10+ FROM node:22 -alpine AS builder
1111WORKDIR /app
1212
13- # Declare build arguments for environment variables
14- ARG DISCORD_BOT_TOKEN
15- ARG LUMA_API_KEY
16- ARG STRIPE_SECRET_KEY
17- ARG ETHERSCAN_API_KEY
18- ARG MONERIUM_CLIENT_ID
19- ARG MONERIUM_CLIENT_SECRET
20- ARG RESEND_API_KEY
21-
22- # Set environment variables from build args
23- ENV DISCORD_BOT_TOKEN=$DISCORD_BOT_TOKEN
24- ENV LUMA_API_KEY=$LUMA_API_KEY
25- ENV STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
26- ENV ETHERSCAN_API_KEY=$ETHERSCAN_API_KEY
27- ENV MONERIUM_CLIENT_ID=$MONERIUM_CLIENT_ID
28- ENV MONERIUM_CLIENT_SECRET=$MONERIUM_CLIENT_SECRET
29- ENV RESEND_API_KEY=$RESEND_API_KEY
30-
3113# Copy dependencies from deps stage
3214COPY --from=deps /app/node_modules ./node_modules
3315COPY . .
@@ -42,7 +24,7 @@ ENV NEXT_TELEMETRY_DISABLED=1
4224RUN npm run build
4325
4426# Stage 3: Production runner
45- FROM node:20 -alpine AS runner
27+ FROM node:22 -alpine AS runner
4628WORKDIR /app
4729
4830ENV NODE_ENV=production
@@ -55,11 +37,18 @@ RUN adduser --system --uid 1001 nextjs
5537# Copy necessary files
5638COPY --from=builder /app/public ./public
5739COPY --from=builder /app/package.json ./package.json
40+ COPY --from=builder /app/package-lock.json ./package-lock.json
5841
5942# Copy built application
6043COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
6144COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
6245
46+ # Copy scripts and node_modules for data fetching
47+ COPY --from=builder --chown=nextjs:nodejs /app/scripts ./scripts
48+ COPY --from=builder --chown=nextjs:nodejs /app/src ./src
49+ COPY --from=builder --chown=nextjs:nodejs /app/node_modules ./node_modules
50+ COPY --from=builder --chown=nextjs:nodejs /app/tsconfig.json ./tsconfig.json
51+
6352# Create data directory with proper permissions
6453RUN mkdir -p /app/data && chown nextjs:nodejs /app/data
6554
0 commit comments