# ---- build stage ----
FROM node:20-alpine AS builder
WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build

# ---- production stage ----
FROM node:20-alpine
WORKDIR /app

# Install openssl for corporate CA certificate handling (TRUEREF-0019)
RUN apk add --no-cache openssl git

# Install all deps (includes tsx for the MCP server and drizzle-kit for migrations)
COPY package*.json ./
RUN npm ci

# Built SvelteKit app (adapter-node output)
COPY --from=builder /app/build ./build

# MCP server source
COPY --from=builder /app/src/mcp ./src/mcp

# Drizzle migrations
COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts
COPY --from=builder /app/src/lib/server/db/migrations ./src/lib/server/db/migrations
COPY --from=builder /app/tsconfig.json ./tsconfig.json

# Persistent volume for the SQLite database
RUN mkdir -p /data
VOLUME ["/data"]

ENV DATABASE_URL=/data/trueref.db
ENV HOST=0.0.0.0
ENV PORT=3000
ENV TRUEREF_API_URL=http://localhost:3000

EXPOSE 3000 3001

COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["web"]
