首頁 > web前端 > js教程 > 如何 Docker 化 SvelteKit

如何 Docker 化 SvelteKit

DDD
發布: 2025-01-19 12:29:09
原創
221 人瀏覽過

本指南向您展示如何容器化 SvelteKit 應用程式以簡化部署和管理。 請記住:這是針對 SvelteKit,而不是 Svelte!

設定

如果您缺少 SvelteKit 項目,請建立一個:

<code class="language-bash">npx sv create my-svelte-app --template demo --types ts</code>
登入後複製

接下來,設定 SvelteKit 以使用 adapter-node 實作 Node.js 相容性,這對於容器化至關重要。安裝它:

<code class="language-bash">npm i -D @sveltejs/adapter-node</code>
登入後複製

修改svelte.config.js

<code class="language-javascript">// svelte.config.js
- import adapter from '@sveltejs/adapter-auto';
+ import adapter from '@sveltejs/adapter-node';</code>
登入後複製

現在,建立您的Dockerfile。這指示 Docker 建置和運行您的應用程式:

<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>
登入後複製

Dockerfile使用多階段建置。建構器階段編譯您的應用程序,最後階段創建更精簡的運行時映像。

要簡化建置過程,請建立一個 .dockerignore 檔案:

<code>Dockerfile
.dockerignore
.git
.gitignore
.gitattributes
README.md
.npmrc
.prettierrc
.eslintrc.cjs
.graphqlrc
.editorconfig
.svelte-kit
.vscode
node_modules
build
package
**/.env</code>
登入後複製

通常,將所有相依性安裝為 devDependencies(使用 npm i -D <package>)。這讓 SvelteKit 捆綁它們,刪除未使用的匯入。 但是,如果您在建置過程中遇到諸如 __dirname undefined 之類的問題,請將該套件安裝為常規依賴項。 如果所有依賴項都是 devDependencies,則可以在 Docker 最後階段省略複製 node_modules,進一步最小化映像大小。

建立您的 Docker 映像:

<code class="language-bash">docker build -t my-sveltekit-app .</code>
登入後複製

運行容器化應用程式:

<code class="language-bash">docker run -p 3000:3000 my-sveltekit-app</code>
登入後複製

透過http://localhost:3000存取您的應用程式。

How to Dockerize SvelteKit

環境變數

SvelteKit 提供了四種管理環境變數的方法:$env/dynamic/private$env/dynamic/public$env/static/private$env/static/public。 請記住,不同的部署平台以不同的方式處理這些問題;請查閱他們的文件。

對於表單操作和伺服器端功能,正確設定ORIGIN環境變數以防止跨站POST錯誤:

<code class="language-bash">docker run -p 3000:3000 -e ORIGIN=http://localhost:3000 my-sveltekit-app</code>
登入後複製

http://localhost:3000 替換為您的生產域。

生產最佳化

  1. 健康檢查:新增/health端點並使用Docker的HEALTHCHECK指令:
<code class="language-dockerfile">HEALTHCHECK --interval=30s --timeout=3s \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1</code>
登入後複製
  1. 記憶體限制: 設定 Node.js 記憶體限制:
<code class="language-bash">docker run -p 3000:3000 -e NODE_OPTIONS="--max-old-space-size=512" my-sveltekit-app</code>
登入後複製
  1. 安全掃描:定期掃描漏洞:
<code class="language-bash">docker scout quickview</code>
登入後複製

結論

您現在已經容器化了 SvelteKit 應用程式。對於部署,請考慮 sliplane.io。

以上是如何 Docker 化 SvelteKit的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板