# 多阶段构建 - 前端
FROM node:20-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm ci
COPY frontend/ ./
RUN npm run build

# 多阶段构建 - 后端
FROM node:20-alpine AS backend-builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY tsconfig.json ./
COPY src/ ./src/
# 只编译 TypeScript，不运行 build:frontend（前端已单独构建）
RUN npx tsc

# 最终镜像
FROM node:20-alpine
WORKDIR /app

# 安装 docker cli（用于与宿主机 docker 通信）
RUN apk add --no-cache docker-cli

# 复制构建产物
COPY --from=backend-builder /app/dist ./dist
COPY --from=backend-builder /app/node_modules ./node_modules
COPY --from=frontend-builder /app/frontend/dist ./dist/public
COPY package.json ./

# 复制版本文件
ARG AGENT_VERSION=1.0.0
RUN echo "${AGENT_VERSION}" > /app/VERSION.txt

# 环境变量
ENV NODE_ENV=production
ENV PORT=3080

EXPOSE 3080

CMD ["node", "dist/server.js"]
