Ce guide vous montre comment conteneuriser votre application SvelteKit pour un déploiement et une gestion simplifiés. N'oubliez pas : c'est pour SvelteKit, pas pour Svelte !
Configuration
S'il vous manque un projet SvelteKit, créez-en un :
<code class="language-bash">npx sv create my-svelte-app --template demo --types ts</code>
Ensuite, configurez SvelteKit pour utiliser le adapter-node
pour la compatibilité Node.js, essentiel pour la conteneurisation. Installez-le :
<code class="language-bash">npm i -D @sveltejs/adapter-node</code>
Modifier svelte.config.js
:
<code class="language-javascript">// svelte.config.js - import adapter from '@sveltejs/adapter-auto'; + import adapter from '@sveltejs/adapter-node';</code>
Maintenant, créez votre Dockerfile
. Ceci indique à Docker comment créer et exécuter votre application :
<code class="language-dockerfile"># 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" ]</code>
Ce Dockerfile
utilise une construction en plusieurs étapes. L'étape de création compile votre application et l'étape finale crée une image d'exécution plus simple.
Pour rationaliser le processus de construction, créez un .dockerignore
fichier :
<code>Dockerfile .dockerignore .git .gitignore .gitattributes README.md .npmrc .prettierrc .eslintrc.cjs .graphqlrc .editorconfig .svelte-kit .vscode node_modules build package **/.env</code>
Généralement, installez toutes les dépendances en tant que devDependencies
(en utilisant npm i -D <package>
). Cela permet à SvelteKit de les regrouper, supprimant ainsi les importations inutilisées. Cependant, si vous rencontrez des problèmes tels que __dirname
non défini lors de la construction, installez le package en tant que dépendance standard. Si toutes les dépendances sont devDependencies
, vous pouvez omettre de copier node_modules
lors de l'étape finale de Docker, minimisant ainsi davantage la taille de l'image.
Créez votre image Docker :
<code class="language-bash">docker build -t my-sveltekit-app .</code>
Exécutez l'application conteneurisée :
<code class="language-bash">docker run -p 3000:3000 my-sveltekit-app</code>
Accédez à votre application sur http://localhost:3000
.
Variables d'environnement
SvelteKit propose quatre façons de gérer les variables d'environnement : $env/dynamic/private
, $env/dynamic/public
, $env/static/private
et $env/static/public
. N'oubliez pas que différentes plates-formes de déploiement les gèrent différemment ; consulter leur documentation.
Pour les actions de formulaire et les fonctionnalités côté serveur, définissez correctement la variable d'environnement ORIGIN
pour éviter les erreurs POST intersites :
<code class="language-bash">docker run -p 3000:3000 -e ORIGIN=http://localhost:3000 my-sveltekit-app</code>
Remplacez http://localhost:3000
par votre domaine de production.
Optimisation de la production
/health
et utilisez l'instruction HEALTHCHECK
de Docker :<code class="language-dockerfile">HEALTHCHECK --interval=30s --timeout=3s \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1</code>
<code class="language-bash">docker run -p 3000:3000 -e NODE_OPTIONS="--max-old-space-size=512" my-sveltekit-app</code>
<code class="language-bash">docker scout quickview</code>
Conclusion
Vous avez maintenant conteneurisé votre application SvelteKit. Pour le déploiement, pensez à sliplane.io.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!