ARG NODE=node:18-alpine

# Stage 1: Install dependencies
FROM ${NODE} AS deps

RUN apk add --no-cache libc6-compat
WORKDIR /srv/app

COPY package.json yarn.lock* ./
RUN yarn --frozen-lockfile

# Stage 3: Run Developpment Image
FROM deps as dev

EXPOSE 3000
ENV PORT 3000

CMD ["sh", "-c", "yarn install -r --offline; yarn dev"]


# Stage 2: Build the app
FROM ${NODE} AS builder
WORKDIR /srv/app
COPY --from=deps /srv/app/node_modules ./node_modules
COPY --link . .
RUN yarn build




# Stage 4: Run the production
FROM ${NODE} AS prod
WORKDIR /srv/app

ENV NODE_ENV production

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

# copy assets and the generated standalone server
COPY --from=builder --link  /srv/app/public ./public
COPY --from=builder --link --chown=nextjs:nodejs /srv/app/.next/standalone ./
COPY --from=builder --link --chown=nextjs:nodejs /srv/app/.next/static ./.next/static

USER nextjs

EXPOSE 3000

ENV PORT 3000

# Serve the app
CMD ["node", "server.js"]