1- FROM node:18
2-
3- # Install system dependencies (if necessary)
4- RUN apt-get update && apt-get install -y \
5- libcairo2-dev \
6- libpango1.0-dev \
7- libjpeg-dev \
8- libgif-dev \
9- librsvg2-dev \
10- build-essential \
11- && rm -rf /var/lib/apt/lists/*
1+ FROM node:22-alpine AS base
122
3+ ENV PNPM_HOME="/pnpm"
4+ ENV PATH="$PNPM_HOME:$PATH"
5+ RUN corepack enable
6+
7+ RUN apk add --no-cache libc6-compat python3 make g++ git \
8+ cairo-dev pango-dev jpeg-dev giflib-dev librsvg-dev
9+
10+ FROM base AS builder
1311WORKDIR /app
1412
1513ARG NEXT_PUBLIC_ALCHEMY_KEY
1614ARG NEXT_PUBLIC_INFURA_KEY
1715ARG NEXT_PUBLIC_WC_PROJECT_ID
1816ARG NEXT_PUBLIC_THE_GRAPH_MAINNET_API_KEY
1917ARG NEXT_PUBLIC_THE_GRAPH_SEPOLIA_API_KEY
18+
2019ENV NEXT_PUBLIC_ALCHEMY_KEY=$NEXT_PUBLIC_ALCHEMY_KEY
2120ENV NEXT_PUBLIC_INFURA_KEY=$NEXT_PUBLIC_INFURA_KEY
2221ENV NEXT_PUBLIC_WC_PROJECT_ID=$NEXT_PUBLIC_WC_PROJECT_ID
2322ENV NEXT_PUBLIC_THE_GRAPH_MAINNET_API_KEY=$NEXT_PUBLIC_THE_GRAPH_MAINNET_API_KEY
2423ENV NEXT_PUBLIC_THE_GRAPH_SEPOLIA_API_KEY=$NEXT_PUBLIC_THE_GRAPH_SEPOLIA_API_KEY
25- COPY . .
2624
27- # Install pnpm and dependencies
28- RUN npm install -g
[email protected] 29- RUN rm -rf node_modules
30- RUN pnpm config set store-dir ~/.local/share/pnpm/store
25+ COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
26+
27+ COPY packages/linea-ens-app/package.json ./packages/linea-ens-app/
28+ COPY packages/linea-ens-contracts/package.json ./packages/linea-ens-contracts/
29+
30+ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile --prefer-offline
31+
32+ COPY .git ./.git
3133
34+ COPY packages/linea-ens-app/ ./packages/linea-ens-app/
35+ COPY packages/linea-ens-contracts/ ./packages/linea-ens-contracts/
3236
3337WORKDIR /app/packages/linea-ens-app
38+ RUN pnpm build
3439
35- # Clear Next.js cache
36- RUN rm -rf .next
37- RUN pnpm install
38- RUN pnpm run build
40+ FROM node:22-alpine AS runner
41+ WORKDIR /app
42+
43+ ENV NODE_ENV=production
44+ ENV NEXT_TELEMETRY_DISABLED=1
45+
46+ RUN addgroup --system --gid 1001 nodejs && \
47+ adduser --system --uid 1001 nextjs
48+
49+ COPY --from=builder --chown=nextjs:nodejs /app/packages/linea-ens-app/.next/standalone ./
50+ COPY --from=builder --chown=nextjs:nodejs /app/packages/linea-ens-app/.next/static ./packages/linea-ens-app/.next/static
51+ COPY --from=builder --chown=nextjs:nodejs /app/packages/linea-ens-app/public ./packages/linea-ens-app/public
3952
4053EXPOSE 3000
4154
42- CMD ["pnpm" , "start" ]
55+ USER nextjs
56+
57+ CMD ["node" , "packages/linea-ens-app/server.js" ]
0 commit comments