DigitalOcean هي منصة سحابية توفر مجموعة من الخدمات لبناء ونشر التطبيقات.
في هذا الدليل، سنقوم بنشر خادم HTTP Bun إلى DigitalOcean باستخدام Dockerfile.
NOTE
قبل المتابعة، تأكد من أن لديك:- تطبيق Bun جاهز للنشر
- حساب DigitalOcean
- DigitalOcean CLI مثبت ومُهيأ
- Docker مثبت ومضاف إلى
PATH
إنشاء سجل حاوية DigitalOcean جديد
أنشئ سجل حاوية جديد لتخزين صورة Docker.
من خلال لوحة تحكم DigitalOcean
في لوحة تحكم DigitalOcean، انتقل إلى Container Registry، وأدخل التفاصيل الخاصة بالسجل الجديد.
تأكد من صحة التفاصيل، ثم انقر على Create Registry.
من خلال DigitalOcean CLI
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2يجب أن ترى السجل الجديد في لوحة تحكم سجل DigitalOcean:
إنشاء Dockerfile جديد
تأكد من أنك في الدليل الذي يحتوي على مشروعك، ثم قم بإنشاء Dockerfile جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على التعليمات لتهيئة الحاوية ونسخ ملفات المشروع المحلية وتثبيت التبعيات وتشغيل التطبيق.
# استخدام صورة Bun الرسمية لتشغيل التطبيق
FROM oven/bun:debian
# تعيين دليل العمل إلى `/app`
WORKDIR /app
# نسخ package.json و bun.lock إلى داخل الحاوية
COPY package.json bun.lock ./
# تثبيت التبعيات
RUN bun install --production --frozen-lockfile
# نسخ بقية التطبيق إلى داخل الحاوية
COPY . .
# فتح المنفذ (ستقوم DigitalOcean بتعيين متغير بيئة PORT)
EXPOSE 8080
# تشغيل التطبيق
CMD ["bun", "index.ts"]NOTE
تأكد من أن أمر البدء يتوافق مع نقطة دخول التطبيق. يمكن أن يكون هذا أيضًا `CMD ["bun", "run", "start"]` إذا كان لديك نص بدء في `package.json`.تقوم هذه الصورة بتثبيت التبعيات وتشغيل التطبيق باستخدام Bun داخل حاوية. إذا لم يكن للتطبيق تبعيات، يمكنك حذف السطر RUN bun install --production --frozen-lockfile.
أنشئ ملف .dockerignore جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على الملفات والمجلدات التي يجب استبعادها من صورة الحاوية، مثل node_modules. هذا يجعل عمليات البناء أسرع وأصغر:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# أي ملفات أو مجلدات أخرى تريد استبعادهامصادقة Docker مع سجل DigitalOcean
قبل بناء ودفع صورة Docker، قم بمصادقة Docker مع سجل DigitalOcean للحاويات:
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
يقوم هذا الأمر بمصادقة Docker مع سجل DigitalOcean باستخدام بيانات اعتماد DigitalOcean الخاصة بك. بدون هذه الخطوة، سيفشل أمر البناء والدفع بخطأ مصادقة 401.بناء ودفع صورة Docker إلى سجل DigitalOcean
تأكد من أنك في الدليل الذي يحتوي على Dockerfile، ثم قم ببناء ودفع صورة Docker إلى سجل DigitalOcean في أمر واحد:
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .NOTE
إذا كنت تبني على جهاز ARM Mac (M1/M2)، فيجب عليك استخدام `docker buildx` مع `--platform=linux/amd64` لضمان التوافق مع البنية التحتية لـ DigitalOcean. استخدام `docker build` بدون علم المنصة سينشئ صورة ARM64 لن تعمل على DigitalOcean.بمجرد دفع الصورة، يجب أن تراها في لوحة تحكم سجل DigitalOcean:
إنشاء مشروع DigitalOcean App Platform جديد
في لوحة تحكم DigitalOcean، انتقل إلى App Platform > Create App. يمكننا إنشاء مشروع مباشرة من صورة الحاوية.
تأكد من صحة التفاصيل، ثم انقر على Next.
راجع وقم بتكوين إعدادات الموارد، ثم انقر على Create app.
زيارة تطبيقك المباشر
🥳 تطبيقك الآن يعمل! بمجرد إنشاء التطبيق، يجب أن تراه في لوحة تحكم App Platform مع عنوان URL العام.