fix: Schrift mitliefern statt beim Bauen herunterladen
next/font/google laedt Outfit beim Bauen von Google — das macht den Build von einer Netzverbindung abhaengig und liess ihn im Container haengen. Die variable Fassung liegt jetzt als Datei im Repository; weder beim Bauen noch zur Laufzeit geht eine Anfrage nach aussen. Ausserdem: npm blockiert seit Version 11 Install-Skripte. Fuer prisma und @prisma/engines sind sie jetzt gezielt erlaubt, damit im Image die plattformpassende Engine bereitliegt.
This commit is contained in:
@@ -22,6 +22,16 @@ Containerstart zeigt.
|
|||||||
installiert und liegt im Laufzeitimage unter `/node_modules`, wo sie den
|
installiert und liegt im Laufzeitimage unter `/node_modules`, wo sie den
|
||||||
getracten Abhängigkeitsbaum der Anwendung nicht stört.
|
getracten Abhängigkeitsbaum der Anwendung nicht stört.
|
||||||
|
|
||||||
|
- **Der Build hing im Container am Schriftabruf.** `next/font/google` lädt
|
||||||
|
Outfit beim Bauen von Google herunter — das macht den Build von einer
|
||||||
|
Netzverbindung abhängig und blieb im Container hängen. Die variable Fassung
|
||||||
|
liegt jetzt als Datei im Repository; weder beim Bauen noch zur Laufzeit geht
|
||||||
|
eine Anfrage nach außen. Für eine selbst gehostete Anwendung ist das ohnehin
|
||||||
|
das Richtige.
|
||||||
|
- **npm blockierte Prismas Install-Skripte** (Voreinstellung seit npm 11),
|
||||||
|
wodurch im Image die plattformpassende Engine fehlen konnte. Sie sind jetzt
|
||||||
|
gezielt für `prisma` und `@prisma/engines` erlaubt statt pauschal.
|
||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
|
|
||||||
- **Erscheinungsmeldung für Watchlist-Filme.** Der Schalter dafür stand schon im
|
- **Erscheinungsmeldung für Watchlist-Filme.** Der Schalter dafür stand schon im
|
||||||
|
|||||||
+5
-2
@@ -16,7 +16,10 @@ ENV NEXT_TELEMETRY_DISABLED=1
|
|||||||
FROM base AS deps
|
FROM base AS deps
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json package-lock.json ./
|
COPY package.json package-lock.json ./
|
||||||
RUN npm ci --no-audit --no-fund
|
# npm blockt Install-Skripte seit Version 11 standardmäßig. Prisma braucht seine
|
||||||
|
# eigenen, um die passende Engine für die Plattform bereitzulegen — deshalb hier
|
||||||
|
# gezielt erlaubt statt pauschal.
|
||||||
|
RUN npm ci --no-audit --no-fund --allow-scripts "prisma,@prisma/engines"
|
||||||
|
|
||||||
# --- Build -------------------------------------------------------------------
|
# --- Build -------------------------------------------------------------------
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
@@ -38,7 +41,7 @@ RUN npx prisma generate && npx next build
|
|||||||
# schief: @prisma/config braucht weitere Module, die dabei fehlten.
|
# schief: @prisma/config braucht weitere Module, die dabei fehlten.
|
||||||
FROM base AS prisma-cli
|
FROM base AS prisma-cli
|
||||||
WORKDIR /cli
|
WORKDIR /cli
|
||||||
RUN npm init -y > /dev/null && npm install --omit=dev --no-audit --no-fund prisma@7.10.0
|
RUN npm init -y > /dev/null && npm install --omit=dev --no-audit --no-fund --allow-scripts "prisma,@prisma/engines" prisma@7.10.0
|
||||||
|
|
||||||
# --- Laufzeit ----------------------------------------------------------------
|
# --- Laufzeit ----------------------------------------------------------------
|
||||||
FROM base AS runner
|
FROM base AS runner
|
||||||
|
|||||||
+8
-3
@@ -135,9 +135,14 @@ verklingt. `prefers-reduced-motion: reduce` schaltet sämtliche Übergänge ab.
|
|||||||
|
|
||||||
## Typografie
|
## Typografie
|
||||||
|
|
||||||
**Outfit** — geometrisch, leicht gerundet, passt zur Wortmarke. Wird beim Bauen
|
**Outfit** — geometrisch, leicht gerundet, passt zur Wortmarke. Die variable
|
||||||
heruntergeladen und mit ausgeliefert; die laufende Instanz fragt nie bei Google
|
Fassung (Strichstärke 100–900) liegt als Datei im Repository
|
||||||
an. Rückfallkette: Inter, dann System-Sans.
|
(`public/fonts/`), aufgeteilt in Latin und Latin-Extended.
|
||||||
|
|
||||||
|
Bewusst nicht `next/font/google`: das lädt die Schrift beim Bauen herunter und
|
||||||
|
macht den Build von einer Netzverbindung abhängig — im Container blieb er
|
||||||
|
daran hängen. Mit der mitgelieferten Datei gibt es weder beim Bauen noch zur
|
||||||
|
Laufzeit einen Abruf nach außen. Rückfallkette: Inter, dann System-Sans.
|
||||||
|
|
||||||
## Grundhaltung
|
## Grundhaltung
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -13,6 +13,16 @@ Containerstart zeigt.
|
|||||||
installiert und liegt im Laufzeitimage unter `/node_modules`, wo sie den
|
installiert und liegt im Laufzeitimage unter `/node_modules`, wo sie den
|
||||||
getracten Abhängigkeitsbaum der Anwendung nicht stört.
|
getracten Abhängigkeitsbaum der Anwendung nicht stört.
|
||||||
|
|
||||||
|
- **Der Build hing im Container am Schriftabruf.** `next/font/google` lädt
|
||||||
|
Outfit beim Bauen von Google herunter — das macht den Build von einer
|
||||||
|
Netzverbindung abhängig und blieb im Container hängen. Die variable Fassung
|
||||||
|
liegt jetzt als Datei im Repository; weder beim Bauen noch zur Laufzeit geht
|
||||||
|
eine Anfrage nach außen. Für eine selbst gehostete Anwendung ist das ohnehin
|
||||||
|
das Richtige.
|
||||||
|
- **npm blockierte Prismas Install-Skripte** (Voreinstellung seit npm 11),
|
||||||
|
wodurch im Image die plattformpassende Engine fehlen konnte. Sie sind jetzt
|
||||||
|
gezielt für `prisma` und `@prisma/engines` erlaubt statt pauschal.
|
||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
|
|
||||||
- **Erscheinungsmeldung für Watchlist-Filme.** Der Schalter dafür stand schon im
|
- **Erscheinungsmeldung für Watchlist-Filme.** Der Schalter dafür stand schon im
|
||||||
|
|||||||
+16
-5
@@ -1,5 +1,5 @@
|
|||||||
import type { Metadata, Viewport } from "next";
|
import type { Metadata, Viewport } from "next";
|
||||||
import { Outfit } from "next/font/google";
|
import localFont from "next/font/local";
|
||||||
import { BrandDefs } from "@/components/brand/FlimmerLogo";
|
import { BrandDefs } from "@/components/brand/FlimmerLogo";
|
||||||
import { ToastProvider } from "@/components/Toasts";
|
import { ToastProvider } from "@/components/Toasts";
|
||||||
import { ServiceWorkerRegistration } from "@/components/ServiceWorkerRegistration";
|
import { ServiceWorkerRegistration } from "@/components/ServiceWorkerRegistration";
|
||||||
@@ -7,13 +7,24 @@ import { env } from "@/lib/env";
|
|||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Outfit wird beim Bauen heruntergeladen und mit ausgeliefert — die laufende
|
* Outfit liegt als Datei im Repository.
|
||||||
* Instanz fragt also niemals bei Google an.
|
*
|
||||||
|
* next/font/google würde die Schrift beim Bauen herunterladen — das macht den
|
||||||
|
* Build von einer Netzverbindung abhängig und ließ ihn im Container hängen.
|
||||||
|
* Für eine selbst gehostete Anwendung ist die mitgelieferte Datei ohnehin das
|
||||||
|
* Richtige: kein Abruf beim Bauen, keiner zur Laufzeit.
|
||||||
|
*
|
||||||
|
* Es ist die variable Fassung (Strichstärke 100–900), aufgeteilt in Latin und
|
||||||
|
* Latin-Extended — der Browser lädt nur, was die Seite wirklich braucht.
|
||||||
*/
|
*/
|
||||||
const outfit = Outfit({
|
const outfit = localFont({
|
||||||
subsets: ["latin"],
|
src: [
|
||||||
|
{ path: "../../public/fonts/outfit-latin.woff2", weight: "100 900", style: "normal" },
|
||||||
|
{ path: "../../public/fonts/outfit-latin-ext.woff2", weight: "100 900", style: "normal" },
|
||||||
|
],
|
||||||
display: "swap",
|
display: "swap",
|
||||||
variable: "--font-outfit",
|
variable: "--font-outfit",
|
||||||
|
fallback: ["Inter", "Segoe UI", "system-ui", "sans-serif"],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
|
|||||||
Reference in New Issue
Block a user