8가지 간단한 단계를 통해 Dokku에 SvelteKit 배포

12684 단어 devopsdokkusvelte
면책 성명: 나는 누구도 내가 이 글을 쓰는 것을 협찬한 것이 아니다. 나는 단지 이 기술의 충실한 팬일 뿐이다❤️
웹 응용 프로그램을 위탁 관리해야 하거나 관리해야 했지만, 어떤 이유로 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 프레젠테이션 프로그램을 설정합니다.

선결 조건
  • SSH 액세스 권한을 가진 프라이빗 클라우드 VM이 필요합니다.많은 선택이 있다.두 가지가 매우 유행하는 것은 Digital OceanVultr이다.
    어떤 상자를 선택하든지 Ubuntu 20.04가 실행되고 최소한 1GB의 메모리가 있는지 확인하십시오.
  • 도메인 이름과 기록을 수정할 수 있는 DNS 공급자가 필요합니다.개인적으로 저는 Netlify를 사용하여 DNS 관리를 합니다.
  • linux 명령줄을 두려워하지 않아야 합니다. Dokku는 사용자 인터페이스가 없습니다.😉
  • 준비됐나요?

    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]을 해서 너의 작품을 볼 수 있을 거야!

    공식 문서
    다음은 내가 생각하기에 유용한 것이다.

    두쿠
  • Getting started with Dokku
  • Deploying to Dokku
  • Git Deployment to Dokku
  • CloudNative Buildpacks on Dokku

  • 빌드 패키지
  • Using Buildpack's project.toml

  • 파크토
  • Packeto Node.js Primer
  • Packeto Node.js Reference

  • 마지막 생각
    이 과정을 더욱 좋게 할 수 있는 몇 가지 방법이 있다. (나는 어제 도쿠가 심지어 롤이 존재한다는 것을 알았다.) 그 중에서 가장 두드러진 것은 바로 Github에서 배치하는 것이다.고맙게도 Dokku는 with a Github Action를 소개했고 Gitlab 옵션이 하나 더 있습니다.👍
    이 과정은 React/Vue/Angular 응용 프로그램에 합리적으로 적용되어야 한다. 사람들이 첫 번째 위탁관리PaaS를 얻는 데 도움을 줄 수 있기를 바란다!!
    m@

    좋은 웹페이지 즐겨찾기