រចនាសម្ព័ន្ធស្ថិតនៅ 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 ។
ការដាក់ស្តារ
- បង្កើតគម្រោង Vercel ពី repo ជាមួយ Root Directory
apps/web។apps/web/vercel.jsonកំណត់ពាក្យបញ្ជាដំឡើង និងសង់ (NITRO_PRESET=vercel) ហើយបម្រើ/sw.jsដោយមិន cache។ - កំណត់អថេរបរិស្ថាន។ ពី
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 របាយការណ៍នៃមូលដ្ឋានទិន្នន័យនោះអវត្តមាន។ - លើម៉ាស៊ីនជួយ ដំណើរការ
docker/compose.yamlដោយគ្មានសេវាwebជាមួយdocker/.envដដែល៖ ការផ្លាស់ប្តូរដំណើរការនៅទីនោះ មុនការដាក់ស្តារ Vercel នីមួយៗត្រូវបានបញ្ជូនឡើង។docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content - ដាក់ស្តារ។ លើការរៀបចំដែលបានបដិសេធកំណត់ត្រានៃ function ចាប់ផ្តើមជាមួយ “The web tier did not start on vercel” ហើយរាយការកំណត់នីមួយៗដែលត្រូវផ្លាស់ប្តូរ។
ការធ្វើឱ្យប្រសើរ
ផ្លាស់ប្តូរពីម៉ាស៊ីនជួយជាមុនសិន រួចបញ្ជូនការដាក់ស្តារ Vercel ថ្មី រួចចង្កោម worker របស់កូន៖ លំដាប់ក្នុង upgrade.md។ ការត្រឡប់ក្រោយភ្លាមៗរបស់ Vercel ជាការត្រឡប់កូឌូ ហើយតែងសុវត្ថិភាពក្នុងកំណែមួយ។