Replace the generic mcp-call socket path with two authenticated, read-only Git actions. Add response normalization and error masking, a purpose-built frontend, container build configuration, and socket handler unit tests.
51 lines
1.4 KiB
Docker
51 lines
1.4 KiB
Docker
# === STADIUM 1: BUILD ===
|
|
# Bygger frontend-appen og installerer alle workspace-dependencies for build
|
|
FROM node:20-slim AS build
|
|
|
|
WORKDIR /app
|
|
|
|
# 1. Kopier kun manifests for å utnytte Docker layer caching
|
|
COPY package.json package-lock.json ./
|
|
COPY frontend/package.json ./frontend/
|
|
COPY backend/package.json ./backend/
|
|
|
|
# 2. Installer ALLE avhengigheter (inkl. dev) basert på lockfilen
|
|
RUN npm ci
|
|
|
|
# 3. Kopier resten av frontend-kilden og bygg den
|
|
COPY frontend/ ./frontend/
|
|
RUN npm run build --workspace=frontend
|
|
|
|
|
|
# === STADIUM 2: RUNTIME ===
|
|
# Bygger et slankt produksjons-image med kun det nødvendigste
|
|
FROM node:20-slim
|
|
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
# 1. Kopier kun manifests for en ren produksjonsinstallasjon
|
|
COPY package.json package-lock.json ./
|
|
COPY frontend/package.json ./frontend/
|
|
COPY backend/package.json ./backend/
|
|
|
|
# 2. Installer KUN produksjonsavhengigheter for hele workspacet
|
|
# --omit=dev skal hindre at frontend dev-dependencies (vite, etc.) installeres
|
|
RUN npm ci --omit=dev
|
|
|
|
# 3. Kopier backend-kildekoden, eid av non-root 'node'-bruker
|
|
COPY --chown=node:node backend/ ./backend/
|
|
|
|
# 4. Kopier det ferdigbygde frontend-resultatet fra BUILD-stadiet
|
|
COPY --chown=node:node --from=build /app/frontend/dist ./frontend/dist
|
|
|
|
# 5. Bruk non-root bruker for å kjøre applikasjonen
|
|
USER node
|
|
|
|
# Port-dokumentasjon (Cloud Run vil bruke PORT env var)
|
|
EXPOSE 8080
|
|
|
|
# Start backend-serveren
|
|
CMD ["node", "backend/server.js"]
|