FROM --platform=linux/amd64 node:18-alpine as builder

# install pnpm
RUN corepack enable
RUN corepack prepare pnpm@8.6.1 --activate
# 在Alpine中安装必要的依赖
RUN apk add --no-cache openssl
# change workdir
WORKDIR /app
# copy everything
COPY . .
# install dependencies
RUN pnpm install
# build the SvelteKit app
RUN pnpm run dbsync
RUN pnpm run build

# run stage, to separate it from the build stage, to save disk storage
FROM --platform=linux/amd64 node:18-alpine

# install pnpm
RUN corepack enable
RUN corepack prepare pnpm@8.6.1 --activate

# 安装 OpenSSL 1.1 相关依赖
RUN apk add --no-cache openssl

# change workdir
WORKDIR /app

# copy stuff 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 ./

RUN pnpm install --prod
RUN pnpm run dbgen

# expose the app's port
EXPOSE 3000
# run the server
CMD [ "sh", "-c", "node -r dotenv/config ./build" ]
