Diese Anleitung zeigt Ihnen, wie Sie Ihre SvelteKit-Anwendung für eine vereinfachte Bereitstellung und Verwaltung in einen Container umwandeln. Denken Sie daran: Dies ist für SvelteKit, nicht für Svelte!
Einrichten
Wenn Ihnen ein SvelteKit-Projekt fehlt, erstellen Sie eines:
npx sv create my-svelte-app --template demo --types ts
Als nächstes konfigurieren Sie SvelteKit für die Verwendung von adapter-node
für die Node.js-Kompatibilität, die für die Containerisierung unerlässlich ist. Installieren Sie es:
npm i -D @sveltejs/adapter-node
Ändern svelte.config.js
:
// svelte.config.js - import adapter from '@sveltejs/adapter-auto'; + import adapter from '@sveltejs/adapter-node';
Jetzt erstellen Sie Ihr Dockerfile
. Dies weist Docker an, Ihre Anwendung zu erstellen und auszuführen:
# Builder stage FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build RUN npm prune --production # Final stage FROM node:22-alpine WORKDIR /app COPY --from=builder /app/build build/ COPY --from=builder /app/node_modules node_modules/ COPY package.json . EXPOSE 3000 ENV NODE_ENV=production CMD [ "node", "build" ]
Dieser Dockerfile
verwendet einen mehrstufigen Build. In der Builder-Phase wird Ihre App kompiliert und in der letzten Phase wird ein schlankeres Laufzeitbild erstellt.
Um den Build-Prozess zu optimieren, erstellen Sie eine .dockerignore
Datei:
<code>Dockerfile .dockerignore .git .gitignore .gitattributes README.md .npmrc .prettierrc .eslintrc.cjs .graphqlrc .editorconfig .svelte-kit .vscode node_modules build package **/.env</code>
Im Allgemeinen installieren Sie alle Abhängigkeiten als devDependencies
(mit npm i -D <package>
). Dadurch kann SvelteKit sie bündeln und ungenutzte Importe entfernen. Wenn Sie jedoch während des Builds auf Probleme wie „__dirname
undefiniert“ stoßen, installieren Sie das Paket als reguläre Abhängigkeit. Wenn alle Abhängigkeiten devDependencies
sind, können Sie das Kopieren node_modules
in der letzten Docker-Phase weglassen, um die Bildgröße weiter zu minimieren.
Erstellen Sie Ihr Docker-Image:
docker build -t my-sveltekit-app .
Führen Sie die Container-App aus:
docker run -p 3000:3000 my-sveltekit-app
Zugriff auf Ihre App unter http://localhost:3000
.
Umgebungsvariablen
SvelteKit bietet vier Möglichkeiten zum Verwalten von Umgebungsvariablen: $env/dynamic/private
, $env/dynamic/public
, $env/static/private
und $env/static/public
. Denken Sie daran, dass verschiedene Bereitstellungsplattformen damit unterschiedlich umgehen. Konsultieren Sie deren Dokumentation.
Für Formularaktionen und serverseitige Funktionen legen Sie die Umgebungsvariable ORIGIN
richtig fest, um siteübergreifende POST-Fehler zu verhindern:
docker run -p 3000:3000 -e ORIGIN=http://localhost:3000 my-sveltekit-app
Ersetzen Sie http://localhost:3000
durch Ihre Produktionsdomäne.
Produktionsoptimierung
/health
Endpunkt hinzu und verwenden Sie die HEALTHCHECK
-Anweisung von Docker:HEALTHCHECK --interval=30s --timeout=3s \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
docker run -p 3000:3000 -e NODE_OPTIONS="--max-old-space-size=512" my-sveltekit-app
docker scout quickview
Fazit
Sie haben Ihre SvelteKit-Anwendung jetzt in einem Container zusammengefasst. Ziehen Sie für die Bereitstellung Sliplane.io in Betracht.
Das obige ist der detaillierte Inhalt vonSo dockerisieren Sie SvelteKit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!