# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build

# Stage 2: Production
FROM node:20-alpine AS production
WORKDIR /app

COPY package*.json ./
RUN npm ci --omit=dev
# tsx needed to run ingestion scripts manually via docker exec
RUN npm install --no-save tsx

COPY --from=builder /app/dist ./dist
# Store DICTLINE outside /app/data (which is volume-mounted in production)
COPY --from=builder /app/data/whitakers-dictline.txt ./dict/whitakers-dictline.txt
# Scripts are run manually via: docker exec lector-app npx tsx scripts/<name>.ts
COPY scripts ./scripts
COPY shared ./shared
COPY server/morphology-db.ts ./server/morphology-db.ts

ENV NODE_ENV=production
ENV PORT=5000

RUN chown -R node:node /app
USER node

EXPOSE 5000

CMD ["node", "dist/index.cjs"]
