# TCP: A.R.K.A. — vieno paketo mazgo atvaizdas (UI + API).
# Daugiapakopis build: sukompiliuoja web (Vite) ir app (TypeScript),
# galutiniame sluoksnyje API atiduoda statinį UI.

FROM node:22-slim AS build
WORKDIR /app

# Priklausomybės (workspaces).
COPY package.json package-lock.json* ./
COPY app/package.json ./app/
COPY web/package.json ./web/
RUN npm ci

# Šaltinis ir build.
COPY . .
RUN npm run build

# --- Produkcinis sluoksnis ---
# Pastaba: reikia Node ≥ 22.22 dėl React Router 8 ir įmontuotos zstd
# dekompresijos (ZIM skaitytuvas).
FROM node:22-slim AS production
ENV NODE_ENV=production
# Container listens internally on all interfaces; Compose publishes it only on
# host localhost unless ARKA_BIND_IP is explicitly changed.
ENV HOST=0.0.0.0
# V8 senosios kartos atminties riba. Reikalinga didelių ZIM (pvz. pilnų
# nacionalinių Vikipedijų) pilno teksto indeksavimui. Perrašoma vykdymo metu
# (docker -e NODE_OPTIONS=...). Mažoms mašinoms sumažinkite arba apribokite
# indeksą per ARKA_ZIM_MAX_DOCS.
ENV NODE_OPTIONS="--max-old-space-size=4096"
WORKDIR /app

# Tik tai, ko reikia paleidimui.
COPY package.json package-lock.json* ./
COPY app/package.json ./app/
RUN npm ci --omit=dev -w app --include-workspace-root

COPY --from=build /app/app/dist ./app/dist
COPY --from=build /app/web/dist ./web/dist
COPY LICENSE NOTICE ./

EXPOSE 8080
CMD ["node", "app/dist/server.js"]
