រំលងទៅមាតិកា

ស្រទាប់ web លើ Vercel

ដំណើរការស្រទាប់ web របស់ Quire លើ Vercel ជាមួយ worker ជួយ។

មើលជា Markdown

រចនាសម្ព័ន្ធស្ថិតនៅ docs/architecture/23-ops.md ផ្នែក 5។ Vercel ដំណើរការស្រទាប់ web ប៉ុណ្ណោះ។ អ្វីផ្សេងទាំងអស់ដំណើរការលើម៉ាស៊ីនជួយដែលអ្នកដំណើរការ ហើយវាមិនមែនជាជម្រើសទេ។

សភាពក្នុងកំណែនេះ

ការរៀបចំនៅកន្លែង (apps/web/vercel.json preset vercel របស់ Nitro និងការពិនិត្យការចាប់ផ្តើម)។ Vercel ត្រូវការការផ្ទុកឯកសារចែករំលែក (QUIRE_STORAGE_DRIVER=s3 ឬ azure) អ្នកបញ្ជូនដែលដំណើរការឆ្លងកាត់ function instance (QUIRE_REALTIME_DRIVER=sse ឬ centrifugo) និងអ្នកផ្តល់អ៊ីមែល HTTP។ គ្មានពួកគេ ស្រទាប់ web បដិសេធការចាប់ផ្តើម ហើយកំណត់ត្រារបស់វាដាក់ឈ្មោះការកំណត់ដែលខ្វះនីមួយៗ។

ផ្នែកទាំងនេះ

ផ្នែក កន្លែងដែលវាដំណើរការ
web Vercel Functions, Bun runtime៖ ទំព័រ REST, MCP, LTI, webhooks ដែលបានទទួល
worker, scheduler, collab, content ម៉ាស៊ីនជួយ៖ Fly, Railway, ECS ឬម៉ាស៊ីន Docker ផ្ទាល់របស់អ្នកជាមួយ docker/compose.yaml
Postgres ខាងក្រៅ ក្រោម transaction pooler៖ Neon, Supabase ឬ RDS ជាមួយ PgBouncer
ឯកសារ S3 ឬ R2។ គ្មានថាសអចិន្រ្តៃយ៍ទេ
ការងារក្រោយកម្មវិធី ដាក់ក្នុងបញ្ជីជាមួយ pg-boss ក្នុង transaction នៃសំណើ ដំណើរការដោយ worker ជួយ។ ជាមួយ QUIRE_QUEUE_DRIVER=vercel លើ worker ជួយ ការងារស្រាល (ការជូនដំណឹង និង webhooks ដែលមិនរៀបចំលំដាប់) ឆ្លងកាត់ Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) ដូច្នេះ Postgres ដែលបានសន្សំមិនត្រូវបានសួរសម្រាប់ពួកវា
ការងារកើតឡើងដដែល scheduler ជួយ។ គ្មានផ្លូវ Vercel Cron ទេ ព្រោះ cron ដែលធ្វើការងារក្នុង function ផុតកំណត់
ការតាមដាន OpenTelemetry ទៅអ្នកប្រមូលរបស់អ្នក OTEL_EXPORTER_OTLP_ENDPOINT

អ្វីដែលគោលដៅនេះមិនអាចធ្វើបាន

ស្រទាប់ web ពិនិត្យទាំងនេះនៅពេលវាចាប់ផ្តើម ហើយបដិសេធ ដោយដាក់ឈ្មោះបញ្ហាទាំងអស់ ជំនួសការបរាជ័យក្រោយមកលើអ៊ីមែលដំបូងដែលមិនដែលផ្ញើ៖

  • គ្មាន SMTP។ Vercel រារាំង SMTP ចេញ។ កំណត់ QUIRE_EMAIL_PROVIDER_CONFIG ទៅអ្នកផ្តល់ HTTP (Postmark, SES, Mailgun, SendGrid ឬ Resend)។ QUIRE_SMTP_URL ត្រូវបានបដិសេធ។
  • គ្មានថាសក្នុងស្រុក។ QUIRE_STORAGE_DRIVER=local ត្រូវបានបដិសេធ។
  • គ្មានអង្គចងចាំចែករំលែករវាងការហៅ។ QUIRE_REALTIME_DRIVER=inprocess ត្រូវបានបដិសេធ។ event ដែលផ្ញើដោយម៉ាស៊ីនបម្រើត្រូវបានកំណត់កម្រិតនៅការផុតកំណត់នៃ function។ client តភ្ជាប់ឡើងវិញជាមួយ cursor ដូច្នេះគ្មាន event បាត់ទេ ប៉ុន្តែវត្តមានមិនអាចប្រើបាន។
  • មូលដ្ឋានទិន្នន័យ tenant ដែលបាន pin ត្រូវបានកំណត់ប្រហែលប៉ុន្មានប្រាំបី ព្រោះនីមួយៗជា connection pool មួយទៀតក្នុងបរិស្ថានដែលមិនអាចចែករំលែក pool ។

ការដាក់ស្តារ

  1. បង្កើតគម្រោង Vercel ពី repo ជាមួយ Root Directory apps/web។ apps/web/vercel.json កំណត់ពាក្យបញ្ជាដំឡើង និងសង់ (NITRO_PRESET=vercel) ហើយបម្រើ /sw.js ដោយមិន cache។
  2. កំណត់អថេរបរិស្ថាន។ ពី docker/.env.example យ៉ាងតិច៖ QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (អាសយដ្ឋាននៃ pooler) QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM ការកំណត់ការផ្ទុក និង QUIRE_COLLAB_URL និង QUIRE_COLLAB_SIGNING_KEY ចង្អុលទៅសេវា collab របស់កូន។ QUIRE_REPORT_DATABASE_URL ជារបស់មូលដ្ឋានទិន្នន័យរូបវ័ណ្ឌដែល DATABASE_URL ដាក់ឈ្មោះ។ សម្រាប់មូលដ្ឋានទិន្នន័យដែលបានចុះឈ្មោះបន្ថែមនីមួយៗ បន្ថែម URL តភ្ជាប់ quire_report ផ្ទាល់របស់វាទៅបរិស្ថាន web និង worker ទាំងពីរ រួចចុះឈ្មោះឈ្មោះអថេរបរិស្ថានរបស់វាជា env:NAME ក្នុងកុងសូលប្រព័ន្ធ។ វិភាគទានបរាជ័យបិទ បើ URL របាយការណ៍នៃមូលដ្ឋានទិន្នន័យនោះអវត្តមាន។
  3. លើម៉ាស៊ីនជួយ ដំណើរការ docker/compose.yaml ដោយគ្មានសេវា web ជាមួយ docker/.env ដដែល៖
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    ការផ្លាស់ប្តូរដំណើរការនៅទីនោះ មុនការដាក់ស្តារ Vercel នីមួយៗត្រូវបានបញ្ជូនឡើង។
  4. ដាក់ស្តារ។ លើការរៀបចំដែលបានបដិសេធកំណត់ត្រានៃ function ចាប់ផ្តើមជាមួយ “The web tier did not start on vercel” ហើយរាយការកំណត់នីមួយៗដែលត្រូវផ្លាស់ប្តូរ។

ការធ្វើឱ្យប្រសើរ

ផ្លាស់ប្តូរពីម៉ាស៊ីនជួយជាមុនសិន រួចបញ្ជូនការដាក់ស្តារ Vercel ថ្មី រួចចង្កោម worker របស់កូន៖ លំដាប់ក្នុង upgrade.md។ ការត្រឡប់ក្រោយភ្លាមៗរបស់ Vercel ជាការត្រឡប់កូឌូ ហើយតែងសុវត្ថិភាពក្នុងកំណែមួយ។

ការរុករក

វាយដើម្បីស្វែងរក…

↑↓ រុករក↵ ជ្រើសរើសEsc បិទ