All checks were successful
build-and-push / build (push) Successful in 44s
- suggest.js: samlar signaler (Lidarr-bibliotek, Jellyfin senast spelat, Youtubarr-DB senast tillagt/gillat via better-sqlite3 ro), bygger svensk Gemini-prompt (JSON-svar), berikar förslagen med MBID/omslag via Lidarrs metadata-API, cachar batcher i /data/suggestions.json - API: POST /api/suggest/run, GET latest (10 senaste till Upptäck), GET batches + batches/:id (bläddring) - Schemaläggare i server.js: kollar var 10:e minut mot inställningen suggest.intervalHours (default 24, 0 = av) — ställs in under ⚙ - Upptäck: senaste 10 som kort med motivering + '✨ Generera nya förslag'; ny Förslag-sida bläddrar alla cachade batcher; delat MusicCard-kort (sök + förslag) med Hämta-knapp - Dockerfile: byggverktyg för better-sqlite3; 4 nya tester, totalt 25 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01824ZrvG2mDYYrmwqypLNup
28 lines
795 B
Docker
28 lines
795 B
Docker
# Multi-stage: frontend-bygge -> backend-deps -> slim runtime (arm64 på Pi5)
|
|
ARG BUILD_CPUS=2
|
|
|
|
FROM node:22-slim AS frontend
|
|
WORKDIR /f
|
|
COPY frontend/package.json frontend/package-lock.json ./
|
|
RUN npm ci --no-audit --no-fund
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
FROM node:22-slim AS backend
|
|
# python3/make/g++ behövs om better-sqlite3 saknar prebuilt för plattformen
|
|
RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /app
|
|
COPY backend/package.json backend/package-lock.json ./
|
|
RUN npm ci --omit=dev --no-audit --no-fund
|
|
COPY backend/src ./src
|
|
|
|
FROM node:22-slim
|
|
ENV NODE_ENV=production
|
|
WORKDIR /app
|
|
COPY --from=backend /app ./
|
|
COPY --from=frontend /f/dist ./public
|
|
EXPOSE 3000
|
|
USER node
|
|
CMD ["node", "src/server.js"]
|