# 构建阶段
ARG BASE_IMAGE=dify-chat-base
FROM ${BASE_IMAGE} AS builder
WORKDIR /app

# 复制 platform 源码
COPY packages/platform/ ./packages/platform/

# 生成 Prisma 客户端
RUN pnpm --filter dify-chat-platform exec prisma generate
# 构建 platform
RUN pnpm --filter dify-chat-platform build


FROM node:22.21.1-alpine AS runner

WORKDIR /app

# 复制整个 standalone 目录（包含所有必需的文件和依赖）
COPY --from=builder /app/packages/platform/.next/standalone ./
COPY --from=builder /app/packages/platform/.next/static ./packages/platform/.next/static
COPY --from=builder /app/packages/platform/public ./packages/platform/public
# 复制 Prisma 生成的客户端文件（必需）
COPY --from=builder /app/packages/platform/prisma ./packages/platform/prisma
# Prisma 配置文件，执行 Prisma CLI 时必需
COPY --from=builder /app/packages/platform/prisma.config.ts ./packages/platform/prisma.config.ts
COPY packages/platform/docker/entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

ENV NODE_ENV=production
ENV PORT=5300

EXPOSE 5300

WORKDIR /app/packages/platform

# 入口脚本
ENTRYPOINT ["/docker-entrypoint.sh"]

# 启动
CMD ["node", "server.js"]
