이 가이드에서는 단순화된 배포 및 관리를 위해 SvelteKit 애플리케이션을 컨테이너화하는 방법을 보여줍니다. 기억하세요: 이것은 Svelte가 아닌 SvelteKit을 위한 것입니다!
설정
SvelteKit 프로젝트가 부족한 경우 새로 생성하세요.
<code class="language-bash">npx sv create my-svelte-app --template demo --types ts</code>
다음으로 컨테이너화에 필수적인 Node.js 호환성을 위해 adapter-node
를 사용하도록 SvelteKit을 구성합니다. 설치하세요:
<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
undefine과 같은 문제가 발생하면 패키지를 일반 종속성으로 설치하세요. 모든 종속성이 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
에서 앱에 액세스하세요.
환경변수
SvelteKit은 환경 변수를 관리하는 네 가지 방법인 $env/dynamic/private
, $env/dynamic/public
, $env/static/private
, $env/static/public
을 제공합니다. 배포 플랫폼마다 이를 다르게 처리한다는 점을 기억하세요. 해당 문서를 참조하세요.
양식 작업 및 서버측 기능의 경우 사이트 간 POST 오류를 방지하려면 ORIGIN
환경 변수를 올바르게 설정하세요.
<code class="language-bash">docker run -p 3000:3000 -e ORIGIN=http://localhost:3000 my-sveltekit-app</code>
http://localhost:3000
을 프로덕션 도메인으로 바꾸세요.
생산 최적화
/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>
<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>
결론
이제 SvelteKit 애플리케이션이 컨테이너화되었습니다. 배포를 위해서는 slimlane.io를 고려하세요.
위 내용은 SvelteKit을 Docker화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!