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

如何 Docker 化 SvelteKit

DDD
发布: 2025-01-19 12:29:09
原创
269 人浏览过

本指南向您展示如何容器化 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板