إنشاء Dockerfile لتطبيقنا

إدارة حماية البيانات في الحوسبة السحابية | صفحة 90

إنشاء Dockerfile لتطبيقنا

تحويل تطبيق Flask إلى حاوية Docker

1

إنشاء ملف Dockerfile

الملف الأساسي لبناء صورة Docker

محتوى ملف Dockerfile

Dockerfile
1 # استخدام Python 3.9 كصورة أساسية
2 FROM python:3.9-slim
3
4 # تحديد مجلد العمل داخل الحاوية
5 WORKDIR /app
6
7 # نسخ ملف المتطلبات أولاً
8 COPY requirements.txt .
9
10 # تثبيت المكتبات المطلوبة
11 RUN pip install --no-cache-dir -r requirements.txt
12
13 # نسخ باقي ملفات التطبيق
14 COPY . .
15
16 # فتح المنفذ 8080
17 EXPOSE 8080
18
19 # تشغيل التطبيق
20 CMD ["python", "app.py"]

شرح التعليمات

FROM python:3.9-slim

بدء من صورة Python الرسمية النحيفة (أصغر حجماً)

WORKDIR /app

تحديد مجلد العمل داخل الحاوية حيث سيتم وضع التطبيق

COPY requirements.txt .

نسخ ملف المتطلبات أولاً للاستفادة من ذاكرة التخزين المؤقت

RUN pip install ...

تثبيت المكتبات المطلوبة (Flask) داخل الحاوية

COPY . .

نسخ باقي ملفات التطبيق (app.py, templates/)

EXPOSE 8080

إعلام Docker أن التطبيق يستخدم المنفذ 8080

CMD ["python", "app.py"]

الأمر الافتراضي لتشغيل التطبيق عند بدء الحاوية

CMD ["python", "app.py"]

الأمر الافتراضي لتشغيل التطبيق عند بدء الحاوية

2

عملية بناء الصورة

كيف يبني Docker الصورة طبقة بطبقة

تحميل Python Base

~80MB

إنشاء /app

WORKDIR

تثبيت Flask

~15MB

نسخ التطبيق

~2MB

طبقات الصورة (Docker Layers)

Layer 1: Python 3.9 Base Image (80MB)
Layer 2: Set Working Directory (/app)
Layer 3: Copy requirements.txt
Layer 4: Install Flask Dependencies (15MB)
Layer 5: Copy Application Files (2MB)
Layer 6: Set Default Command

إجمالي حجم الصورة: ~97MB

3

ملفات إضافية مطلوبة

ملفات ضرورية لبناء الصورة بنجاح

requirements.txt

requirements.txt
1 Flask==2.3.3
2 Werkzeug==2.3.7

قائمة بالمكتبات المطلوبة مع أرقام الإصدارات

.dockerignore

.dockerignore
1 __pycache__
2 *.pyc
3 .git
4 .vscode
5 README.md

ملفات يجب تجاهلها عند بناء الصورة

هيكل المشروع النهائي

Project Structure
1 my-cloud-app/
2 ├── Dockerfile
3 ├── requirements.txt
4 ├── .dockerignore
5 ├── app.py
6 └── templates/
7     └── index.html

اليوم الثاني: إنشاء Dockerfile

جاهز للخطوة التالية: بناء الصورة! 🚀

مرحباً بك في اليوم الثاني! 🌟