# monitor-ai Dockerfile
FROM node:22-alpine AS base
WORKDIR /app

# 1. 依赖安装
COPY package.json package-lock.json ./
RUN npm ci --production=false && npm ls bcryptjs 2>/dev/null || npm install bcryptjs

# 2. 复制共享库（构建前由部署脚本创建 symlink: shared -> ../shared）
COPY shared/ ./shared/

# 3. 复制源码并构建
COPY . .
RUN npm run build

# 4. 生产镜像
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
RUN apk add --no-cache sqlite
COPY --from=base /app/.next/standalone ./
COPY --from=base /app/.next/static ./.next/static
COPY --from=base /app/scripts ./scripts
COPY --from=base /app/src/lib ./src/lib
COPY --from=base /app/shared ./shared
COPY tsconfig.json ./
COPY entrypoint.sh ./

RUN npm install -g tsx tsconfig-paths
# bcryptjs 未被 standalone 打包，需在 runner 阶段安装
RUN npm install bcryptjs
EXPOSE 6181
CMD ["sh", "entrypoint.sh"]
