# Build stage
FROM --platform=linux/amd64 node:18-bullseye AS builder

# Install pnpm
RUN corepack enable && corepack prepare pnpm@8.6.1 --activate

# Set workdir
WORKDIR /app

# Copy package files and install dependencies
COPY package.json pnpm-lock.yaml ./
RUN pnpm install

# Copy the rest of the files and build
COPY . .
RUN pnpm run dbgen
RUN pnpm run build

# Run stage
FROM --platform=linux/amd64 node:18-alpine3.18 AS runner

# Install pnpm
RUN corepack enable && corepack prepare pnpm@8.6.1 --activate

# Install openssl
RUN apk add --no-cache openssl

# Set workdir
WORKDIR /app

# Copy necessary files from the build stage
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/pnpm-lock.yaml ./
COPY --from=builder /app/build ./build
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/.env ./

# Install production dependencies and generate Prisma client
RUN pnpm install --prod --ignore-scripts
RUN pnpm prisma generate

# Expose the app's port
EXPOSE 3000

# Run the server
CMD [ "sh", "-c", "node -r dotenv/config ./build" ]
