8가지 간단한 단계를 통해 Dokku에 SvelteKit 배포
웹 응용 프로그램을 위탁 관리해야 하거나 관리해야 했지만, 어떤 이유로 Netlify, Vercel, Heroku, Deta 등의 서버 없는 제품을 사용할 수 없습니까?이 플랫폼들은 의심할 여지없이 훌륭하지만, 때로는 완전히 요구에 부합되지 않는다.
아마도 네가 지역에 배치할 수 없기 때문일 것이다. 이렇게 해야 한다.아마도 응용 프로그램에 필요한 인프라가 서버가 없는 창고에서 너무 비싼 것 같다.DBAAS의 공통 주소 문제나 엄격한 데이터 준수 제약 때문일 수 있습니다.(방주, Vercel + PlanetScale 또는 Supabase = 셰프의 키스)
이유가 무엇이든지 간에, 당신은 자신의 위탁 관리를 탐색해야 하는 상황에 처해 있음을 발견할 수 있다.
입력dokku.
"What the heck is dokku?? Like, Heroku or something?"
요컨대 그렇습니다.그것은 헤로쿠를 닮았다.이거 말고 니 DIY PaaS.
가상 머신을 시작하고 Dokku를 설치하고 응용 프로그램을 만들고
git push
코드를 만든 다음...완성: 당신의 응용 프로그램은 용기화되고, 이미 시작되고, 안정적이며, 수시로 데이터를 수신할 수 있으며, 서버가 수직으로 확장될 수만 있다면 가능한 한 많은 응용 프로그램을 설치할 수 있습니다.물론😉)Postgres, Redis, Let's Encrypt 등 플러그인도 있는데, 이 플러그인들은 이러한 서비스의 공급을 추상화하는 데 도움이 되지만, 제어권을 유지하고 싶다면, 이러한 기능을 배제할 수 없다👍
코드를 수정할 때마다 배치가
git push
처럼 간단해지고, 도쿠는 새로운 용기를 제공하며, 제로 정지 시간으로 새 버전의 응용 프로그램을 열교환할 것이다.그래서 만약 당신이 나와 함께 있었다면 모든 서문은 이미 말했을 것입니다. 다음은 Dokku에 SvelteKit를 설치하는 8가지 간단한 절차입니다.
우리 뭐하지?
Dokku를 한 VM에 배치하고 SvelteKit 프레젠테이션 프로그램을 설정합니다.
선결 조건
어떤 상자를 선택하든지 Ubuntu 20.04가 실행되고 최소한 1GB의 메모리가 있는지 확인하십시오.
1단계: VM 구성
서버를 시작하고 공공 IP 주소를 주의하십시오.우리는 두 번째 단계에서 이것이 필요하다.
나는 예시에서 사용할 것이다
10.11.12.13
2단계: DNS 로깅 설정
example.io
를 사용하여 설명하겠습니다: 도메인과 IP를 필요에 따라 교체하려면 먼저 이 단계를 수행합니다. 레코드를 전파/캐시하는 데 1초가 걸리기 때문입니다.DNS 관리자에서 레코드에 대한 와일드카드를 만듭니다.
A *.example.io 10.11.12.13
이것은 모든 하위 영역의 데이터를 우리 Dokku 서버로 가리킨다.또한 도메인의 루트를 같은 서버에 가리키려면 루트를 만들 수도 있습니다.
A example.io 10.11.12.13
3단계: 가상 시스템에 SSH 연결
우리 설치를 시작합시다!우리는 두 개의 소프트웨어 패키지를 설치해야 한다. 그것이 바로 도쿠와 pack 이다.Pack은 훌륭한 응용 프로그램 코드를 용기로 변환하는 데 사용되는 도구입니다.
우선, 만약 당신이 아직 준비가 되지 않았다면, sudo로 가세요.
sudo su
패키지를 설치합니다.add-apt-repository ppa:cncf-buildpacks/pack-cli
apt-get update
apt-get install pack-cli
현재 Dokku를 설치합니다. 본문을 작성할 때 v0입니다.25.4는 최신 안정적인 버전이지만check the docs은 최신 버전이다.wget https://raw.githubusercontent.com/dokku/dokku/v0.25.4/bootstrap.sh
DOKKU_TAG=v0.25.4 bash bootstrap.sh
몇 분 걸려, 인내심.커피 한잔 마시거나 스쿼트 같은 거 해.4단계: 글로벌 구성 가능 파일 구성
첫 번째는 루트입니다. 설정하기 쉽습니다.
dokku domains:set-global example.io
다음에 Dokku는 main
를 기본 지점 이름으로 사용하지 않고 master
사용하도록 추진합니다.dokku git:set --global deploy-branch main
세 번째는buildpack dokku를 설정하면 코드를 용기화하는 데 사용됩니다.packeto.io에 있을 수 없는 사람들은 이미 우리를 위해 이 문제를 해결하는 시스템을 세웠다.dokku buildpacks:set-property --global stack paketobuildpacks/builder:base
마지막 접근: 이상적인 경우, 리포에서 전송할 때마다 비밀번호를 입력해야 하는 것을 원하지 않습니다. 따라서 공공 - 개인 키 접근을 설정했다면, 이 명령을 실행하여dokku 접근 권한을 부여하십시오.cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
5단계: 플러그인 설치
플러그인을 암호화하고 싶어서 설치하고 설정하라고 합니다.
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
dokku config:set --global DOKKU_LETSENCRYPT_EMAIL=[email protected]
dokku letsencrypt:cron-job --add
(당신이 여기에 입력한 이메일 주소는 도메인 이름과 어떤 방식으로도 연결될 필요가 없습니다. 그것은 단지 당신의 주소일 뿐입니다.)다른 플러그인을 설치해야 하는지 여부는 응용 프로그램이 무엇을 필요로 하는지에 달려 있습니다. (보기 full list프레젠테이션 목적으로 Postgres 플러그인도 설치했습니다.
dokku plugin:install https://github.com/dokku/dokku-postgres.git
6단계: 어플리케이션 준비!
우리가 코드를 서버로 전송할 수 있기 전에, 우리는 그것을 전송할 수 있는 위치가 필요하다.
dokku apps:create sveltekit-demo
(다시 한 번 말하지만, 네가 어떻게 명명하든지, 이것은 단지 시범을 보이기 위해서이다)Let's Encrypt에서 HTTPS를 활성화하려면 다음과 같이 하십시오.
dokku letsencrypt:enable sveltekit-demo
다음 단계는 프레젠테이션 응용 프로그램에 불필요하지만 postgres 데이터베이스를 설정하고 응용 프로그램에 연결하는 방법을 설명합니다.dokku postgres:create sveltekit-demo-pg
dokku postgres:link sveltekit-demo-pg sveltekit-demo
이거 너무 쉬워!데이터베이스 URL에 ENV 변수가 생성된 것을 출력에서 볼 수 있습니다. 코드에서 이 변수를 인용할 수 있습니다. 이 변수는 생산에 연결됩니다.👍단계 7: 배포 준비
우리가 추진하기 전에, 우리는 로컬 기기의 코드 라이브러리에 대해 특정한dokku의 일을 해야 합니다.
만약 네가 아직 날씬한 시연을 복제하지 않았다면, 우리는 이렇게 하자.
npm init svelte@next sveltekit-demo
# choose Demo, not Skeleton
# select the other options as you wish
cd sveltekit-demo
git init
git remote add dokku [email protected]:sveltekit-demo
git add .
git commit -m "Initial commit"
git branch -M main
설치@sveltejs/adapter-node
.npm i -D @sveltejs/adapter-node@next
노드 어댑터를 사용하려면 수정svelte.config.js
하십시오. import preprocess from 'svelte-preprocess';
+import adapter from '@sveltejs/adapter-node';
const config = {
preprocess: preprocess(),
kit: {
+ adapter: adapter({
+ out: 'build'
+ }),
// hydrate the <div id="svelte"> element in src/app.html
target: '#svelte'
}
};
package.json
에서 생성 스크립트를 수정합니다. // package.json
{
"scripts": {
- "build": "svelte-kit build",
+ "build": "svelte-kit build && ln -s -f build/index.js server.js",
}
}
이 기호 링크를 만든 것은 패키지가 프로젝트 루트 디렉터리에 server.js
라는 시작 스크립트를 원하기 때문입니다.(설정을 변경할 수 있을 것 같지만, 이것은 나에게 아무런 도움이 되지 않는다. 그럼에도 불구하고!)마지막으로
project.toml
라는 파일을 만듭니다. 이것이 바로 저희가 패키지 환경 변수와 구축에 특정한 정보를 제공하는 방식입니다.# project.toml
[build]
exclude = [
"README.md"
#, and/or another other files that are not relevant
# to the build
]
[[build.env]]
name = "BP_NODE_RUN_SCRIPTS"
value = "build"
[[build.env]]
name = "NODE_ENV"
value = "dev"
첫 번째 환경 변수BP_NODE_RUN_SCRIPTS
는 패키지가 의존항을 설치한 후에 실행된다고 알려준다npm run-script build
.원한다면, 예를 들어 "lint,build"
여러 명령을 실행할 수 있습니다. 이 변수는 쉼표로 구분된 명령 목록을 받아들여 실행할 수 있습니다.두 번째 환경 변수는 패키지가 구축 환경을'dev', 즉'production'이외의 내용으로 설정하는 것을 알려준다.이것이 없으면 개발 의존항을 설치할 수 없기 때문에 SvelteKit 인프라 전체를 잃어버려 구축에 실패할 수 있다.
8단계:밀어야겠다
아무것도 없어!모든 변경 사항을 커밋하고 밀어넣습니다.
git add .
git commit -m "Make dokku compatible"
git push dokku
# if your trunk branch is called something other than main,
# do this instead
git push dokku BRANCH_NAME:main
도쿠는 패키지에서 최신 패키지 그림을 다운로드하고 용기를 구축하며 날씬한 프로그램을 컴파일해서 시작하는 것을 고려할 것이다.🚀 🎉 9단계[보상]: 당신의 일을 감상하세요
너는 지금 네비게이션
https://sveltekit-demo.[YOUR DOMAIN]
을 해서 너의 작품을 볼 수 있을 거야!공식 문서
다음은 내가 생각하기에 유용한 것이다.
두쿠
빌드 패키지
파크토
마지막 생각
이 과정을 더욱 좋게 할 수 있는 몇 가지 방법이 있다. (나는 어제 도쿠가 심지어 롤이 존재한다는 것을 알았다.) 그 중에서 가장 두드러진 것은 바로 Github에서 배치하는 것이다.고맙게도 Dokku는 with a Github Action를 소개했고 Gitlab 옵션이 하나 더 있습니다.👍
이 과정은 React/Vue/Angular 응용 프로그램에 합리적으로 적용되어야 한다. 사람들이 첫 번째 위탁관리PaaS를 얻는 데 도움을 줄 수 있기를 바란다!!
m@
Reference
이 문제에 관하여(8가지 간단한 단계를 통해 Dokku에 SvelteKit 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/emdienn/deploy-sveltekit-on-dokku-in-8-sort-of-easy-steps-28g2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)