Skip to content

DigitalOcean هي منصة سحابية توفر مجموعة من الخدمات لبناء ونشر التطبيقات.

في هذا الدليل، سنقوم بنشر خادم HTTP Bun إلى DigitalOcean باستخدام Dockerfile.

NOTE

قبل المتابعة، تأكد من أن لديك:

إنشاء سجل حاوية DigitalOcean جديد

أنشئ سجل حاوية جديد لتخزين صورة Docker.

من خلال لوحة تحكم DigitalOcean

في لوحة تحكم DigitalOcean، انتقل إلى Container Registry، وأدخل التفاصيل الخاصة بالسجل الجديد.

تأكد من صحة التفاصيل، ثم انقر على Create Registry.

من خلال DigitalOcean CLI
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

يجب أن ترى السجل الجديد في لوحة تحكم سجل DigitalOcean:

إنشاء Dockerfile جديد

تأكد من أنك في الدليل الذي يحتوي على مشروعك، ثم قم بإنشاء Dockerfile جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على التعليمات لتهيئة الحاوية ونسخ ملفات المشروع المحلية وتثبيت التبعيات وتشغيل التطبيق.

docker
# استخدام صورة 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. هذا يجعل عمليات البناء أسرع وأصغر:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# أي ملفات أو مجلدات أخرى تريد استبعادها

مصادقة Docker مع سجل DigitalOcean

قبل بناء ودفع صورة Docker، قم بمصادقة Docker مع سجل DigitalOcean للحاويات:

bash
doctl registry login
txt
Successfully authenticated with registry.digitalocean.com

NOTE

يقوم هذا الأمر بمصادقة Docker مع سجل DigitalOcean باستخدام بيانات اعتماد DigitalOcean الخاصة بك. بدون هذه الخطوة، سيفشل أمر البناء والدفع بخطأ مصادقة 401.

بناء ودفع صورة Docker إلى سجل DigitalOcean

تأكد من أنك في الدليل الذي يحتوي على Dockerfile، ثم قم ببناء ودفع صورة Docker إلى سجل DigitalOcean في أمر واحد:

bash
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 العام.

Bun بواسطة www.bunjs.com.cn تحرير