يتضمن إعداد Docker لتطبيق ويب احتواء تطبيقك وتبعياته، مما يضمن بيئات متسقة عبر التطوير والاختبار والإنتاج. إليك دليل عام يغطي المكونات الأساسية:
1. تثبيت Docker
أولاً، تأكد من تثبيت Docker على نظامك. يمكنك تنزيل Docker Desktop لنظام التشغيل الخاص بك من الموقع الرسمي لـ Docker. بالنسبة لأدوات سطر الأوامر على Linux، استخدم مدير الحزم الخاص بتوزيعتك (على سبيل المثال، sudo apt install docker.io على Ubuntu).
2. إنشاء Dockerfile
Dockerfile هو ملف نصي يحتوي على تعليمات لـ Docker لبناء صورة. يحدد البيئة والتبعيات وكيفية تشغيل تطبيقك.
مثال Dockerfile لتطبيق Node.js:
# استخدام بيئة تشغيل Node.js رسمية كصورة أساسية
FROM node:18-alpine
# تعيين دليل العمل داخل الحاوية
WORKDIR /app
# نسخ package.json و package-lock.json (أو yarn.lock)
COPY package*.json ./
# تثبيت تبعيات التطبيق
RUN npm install
# نسخ بقية كود تطبيقك
COPY . .
# كشف المنفذ الذي يستمع إليه تطبيقك
EXPOSE 3000
# تحديد الأمر لتشغيل تطبيقك
CMD [ "npm", "start" ]
شرح تعليمات Dockerfile الشائعة:
* FROM <image>: يحدد الصورة الأساسية التي سيتم البناء عليها.
* WORKDIR /app: يضبط دليل العمل الحالي داخل الحاوية.
* COPY <src> <dest>: ينسخ الملفات والمجلدات من جهازك المضيف إلى الحاوية.
* RUN <command>: ينفذ الأوامر أثناء عملية بناء الصورة (على سبيل المثال، تثبيت التبعيات).
* EXPOSE <port>: يُعلم Docker أن الحاوية تستمع على هذا المنفذ في وقت التشغيل.
* CMD ["executable", "param1", "param2"]: يحدد الأمر الافتراضي الذي سيتم تشغيله عند بدء تشغيل الحاوية.
3. بناء صورة Docker الخاصة بك
انتقل إلى الدليل الجذر لمشروعك (حيث يوجد Dockerfile الخاص بك) في الطرفية وقم بتشغيل أمر البناء:
docker build -t your-app-name .
docker build: الأمر لإنشاء صورة Docker.-t your-app-name: يضع علامة على الصورة باسم (على سبيل المثال،my-nodejs-app)..: يحدد سياق البناء (الدليل الحالي)، ويخبر Docker بمكان العثور علىDockerfileوملفات التطبيق.
4. تشغيل حاوية Docker الخاصة بك
بمجرد بناء الصورة، يمكنك إنشاء حاوية وتشغيلها منها.
docker run -p 80:3000 your-app-name
docker run: الأمر لبدء حاوية.-p 80:3000: يربط المنفذ3000داخل الحاوية (الذي يستمع إليه تطبيقك) بالمنفذ80على جهازك المضيف. هذا يسمح لك بالوصول إلى تطبيقك عبرhttp://localhost.your-app-name: اسم صورة Docker التي تريد تشغيلها.
سيتم الآن تشغيل تطبيق الويب الخاص بك داخل حاوية Docker، ويمكن الوصول إليه عبر متصفحك.
5. استخدام Docker Compose للتطبيقات متعددة الخدمات
بالنسبة للتطبيقات التي تتضمن خدمات متعددة (على سبيل المثال، تطبيق ويب وقاعدة بيانات)، يعد Docker Compose لا يقدر بثمن. يستخدم ملف docker-compose.yml لتحديد وإدارة جميع الخدمات.
مثال docker-compose.yml لتطبيق Node.js متصل بقاعدة بيانات PostgreSQL:
version: '3.8' # يحدد إصدار تنسيق ملف Compose
services:
web:
build: . # بناء الصورة من Dockerfile في الدليل الحالي
ports:
- "3000:3000"
volumes:
- .:/app # تركيب الكود المحلي للتحديثات المباشرة (التطوير)
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydatabase
depends_on:
- db # التأكد من بدء تشغيل قاعدة البيانات قبل خدمة الويب
networks:
- app-network
db:
image: postgres:14-alpine # استخدام صورة PostgreSQL معدة مسبقًا
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data # الاحتفاظ ببيانات قاعدة البيانات
networks:
- app-network
volumes:
db_data: # تحديد الحجم المسمى
networks:
app-network: # تحديد شبكة مخصصة
لاستخدام Docker Compose، ضع ملف docker-compose.yml في الدليل الجذر لمشروعك وقم بتشغيل:
docker compose up -d --build
docker compose up: يبني الصور (إذا تم استخدام--build) ويشغل الخدمات.-d: يشغل الحاويات في وضع منفصل (في الخلفية).
لإيقاف وإزالة الحاويات والشبكات والأحجام:
docker compose down
يوفر هذا الإعداد بيئة قابلة للتكرار ومعزولة لتطبيق الويب الخاص بك، مما يجعل التطوير والنشر أكثر سلاسة.