الرئيسية / المدونة / Docker للمبتدئين: دليل عملي باستخدام NestJS
Docker للمبتدئين: دليل عملي باستخدام NestJS

Docker للمبتدئين: دليل عملي باستخدام NestJS

مميز

Docker للمبتدئين: دليل عملي باستخدام NestJS

a

admin

المؤلف

20 دقيقة قراءة
51 المشاهدات
21 يونيو 2025

دليل شامل وسهل الفهم لـ Docker و Docker Compose باستخدام تطبيق NestJS عملي. تعلم كيفية تهيئة التطبيق، التعامل مع ملفات .env، وتشغيل خدمات متعددة بسهولة.

دليل Docker و NestJS - الترجمة العربية

إذا كنت قد واجهت صعوبة في إعداد وتشغيل مشروعك على أجهزة مختلفة، أو إذا كان نشر تطبيقك على الخادم يبدو دائماً وكأنك تعيد اختراع العجلة، فأنت في المكان المناسب. في هذا المقال، سنتعرف على أساسيات Docker، ولماذا يعتبر أداة قوية جداً للمطورين، وكيفية استخدامه في مشروع NestJS حقيقي. سنستكشف أيضاً كيفية التعامل مع متغيرات البيئة ونقدم Docker Compose لتبسيط سير عمل التطوير.

ما هو Docker؟

Docker هو منصة مفتوحة المصدر تتيح للمطورين أتمتة نشر التطبيقات داخل حاويات خفيفة الوزن ومحمولة. تحزم هذه الحاويات تطبيقك مع جميع التبعيات والمكتبات وملفات التكوين، مما يجعل تشغيله سهلاً على أي نظام يدعم Docker.

لماذا Docker؟

  • الاتساق عبر البيئات: تشغيل نفس الكود في التطوير والإنتاج المرحلي والإنتاج النهائي
  • الإعداد المبسط: لا حاجة لتثبيت Node.js أو قواعد البيانات أو الأدوات الأخرى يدوياً
  • العزل: يحافظ على عزل تبعيات تطبيقك عن الجهاز المضيف
  • قابلية النقل: تشغيل تطبيقك على أي جهاز مثبت عليه Docker

تثبيت Docker

للبدء، قم بتثبيت Docker من docker.com.

بمجرد التثبيت، تحقق من أنه يعمل:

docker --version

إنشاء تطبيق NestJS (إذا لم يكن لديك واحد بالفعل)

npm i -g @nestjs/cli
nest new my-nest-app
cd my-nest-app

وضع تطبيق NestJS في حاوية Docker

1. إنشاء ملف .dockerignore

node_modules
dist
Dockerfile
docker-compose.yml
.env

لماذا؟ ملف .dockerignore يعمل مثل .gitignore، يخبر Docker بالملفات/المجلدات التي يجب استبعادها عند بناء الصورة. هذا يقلل وقت البناء ويحافظ على نظافة الصورة النهائية من الملفات غير الضرورية مثل التبعيات المحلية والمخرجات المترجمة وملفات التكوين الحساسة.

2. إنشاء Dockerfile

# المرحلة 1: البناء
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# المرحلة 2: التشغيل
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY .env .
CMD [ "node", "dist/main.js" ]

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

شرح الأوامر الرئيسية:

  • FROM: يحدد الصورة الأساسية. نستخدم node:18-alpine لبيئة Node.js صغيرة وآمنة
  • WORKDIR: يحدد مجلد العمل داخل الحاوية
  • COPY: ينسخ الملفات من مشروعك إلى الحاوية
  • RUN: ينفذ أوامر shell، مثل تثبيت التبعيات أو بناء المشروع
  • CMD: الأمر الافتراضي للتشغيل عند بدء الحاوية (تطبيق NestJS)

💡 هذا Dockerfile يستخدم البناء متعدد المراحل للحفاظ على صغر حجم الصورة النهائية من خلال فصل مراحل البناء والتشغيل.

3. التعامل مع متغيرات البيئة

تأكد من أن تطبيق NestJS يستخدم @nestjs/config:

npm install @nestjs/config

في main.ts أو الوحدة الخاصة بك:

import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
  ],
})

أضف ملف .env:

PORT=3000

اقرأه في كودك:

const port = process.env.PORT || 3000;

🔒 لا تقم أبداً بإضافة .env إلى Git. يجب أن يبقى خاصاً وخارج نظام التحكم في الإصدارات.

Docker Compose: تبسيط إعدادات الحاويات المتعددة

Docker Compose يتيح لك تعريف وتشغيل تطبيقات Docker متعددة الحاويات. إنه مثالي لدمج الخدمات مثل تطبيق NestJS + قاعدة بيانات.

مثال: docker-compose.yml

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    env_file:
      - .env
    depends_on:
      - db

  db:
    image: postgres:15
    restart: always
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

لماذا استخدام Docker Compose؟ تخيل أنك تحتاج لبدء خادم الواجهة الخلفية، وقاعدة بيانات PostgreSQL، وربما Redis instance - جميعها مكونة للتواصل مع بعضها البعض. Docker Compose يتيح لك تعريف كل هذه في ملف واحد وبدئها بأمر واحد، مما يجعل التطوير المحلي وتنسيق الإنتاج أبسط بكثير.

ثم شغل:

docker-compose up --build

سيبدأ تطبيق NestJS على المنفذ 3000 وسيكون متصلاً بحاوية قاعدة بيانات PostgreSQL.

أوامر Docker المفيدة

  • بناء الصورة: docker build -t my-nest-app .
  • تشغيل الحاوية: docker run -p 3000:3000 my-nest-app
  • عرض الحاويات: docker ps
  • إيقاف الحاويات: docker-compose down

نظرة عامة بصرية

NestJS → مترجم → حاوية Docker → المنفذ 3000 مكشوف → متصل بقاعدة البيانات (Postgres)

الخلاصة

Docker يبسط التطوير، ويحسن الاتساق، وهو ضروري لنشر التطبيقات الحديثة. من خلال وضع تطبيق NestJS في حاوية واستخدام Docker Compose، تقلل وقت الإعداد، وتتجنب مشاكل "يعمل على جهازي"، وتحضر تطبيقك لقابلية التوسع في الإنتاج.

إذا كنت تبدأ للتو في تطوير الواجهة الخلفية أو تسعى لتحديث سير عملك، فإن تعلم Docker استثمار يؤتي ثماره بسرعة.

هل تحتاج مساعدة في إعداد Docker لمشروعك؟ لا تتردد في التواصل أو الاتصال بي على LinkedIn.

شارك هذا المنشور

تم نسخ الرابط