بناء تطبيق Flask ونشره باستخدام Docker على أوبنتو 18.04
مقدمة
تعد Flask من أشهر أطر العمل في Python لتطوير تطبيقات الويب بفضل بساطتها ومرونتها. يستخدمها المطورون بشكل واسع لإنشاء تطبيقات خفيفة وسريعة يمكنها التوسع بسهولة. من جهة أخرى، يعد Docker أحد الأدوات الرائدة في مجال تطوير البرمجيات، حيث يسمح بتغليف التطبيقات في حاويات (containers) لسهولة نشرها وإدارتها في بيئات متعددة. يهدف هذا المقال إلى استعراض كيفية بناء تطبيق Flask باستخدام Python ونشره باستخدام Docker على نظام أوبنتو 18.04.
المتطلبات الأساسية
قبل البدء، من المهم التأكد من أن لديك:
-
Ubuntu 18.04 أو إصدار لاحق مثبت على جهازك.
-
Python 3 و pip (مدير الحزم الخاص بـ Python).
-
Docker مثبت على الجهاز.
-
محرر نصوص مثل VS Code أو Sublime Text لتحرير الشيفرة البرمجية.
تثبيت Docker على أوبنتو 18.04
لتثبيت Docker على أوبنتو 18.04، اتبع الخطوات التالية:
-
تحديث النظام:
bashsudo apt update sudo apt upgrade -
تثبيت حزم Docker المطلوبة:
أولاً، تأكد من أنك تثبت الحزم المطلوبة:bashsudo apt install apt-transport-https ca-certificates curl software-properties-common -
إضافة مفتاح Docker الرسمي إلى النظام:
bashcurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -
إضافة مستودع Docker إلى قائمة المستودعات:
bashsudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" -
تحديث مستودعات الحزم:
bashsudo apt update -
تثبيت Docker:
bashsudo apt install docker-ce -
التحقق من التثبيت:
بعد تثبيت Docker، تحقق من أنه يعمل بشكل صحيح:bashsudo systemctl status docker -
تشغيل Docker بدون sudo (اختياري):
لتجنب الحاجة إلى استخدامsudoفي كل مرة تشغل فيها أو تستخدم Docker، أضف المستخدم إلى مجموعة Docker:bashsudo usermod -aG docker $USER -
إعادة تشغيل الجلسة:
بعد إضافة المستخدم للمجموعة، قم بتسجيل الخروج وتسجيل الدخول مرة أخرى.
إنشاء تطبيق Flask
الخطوة التالية هي بناء تطبيق Flask بسيط. إليك كيف تبدأ:
-
تثبيت Flask:
قم أولاً بإنشاء بيئة افتراضية Python لتجنب تعارض الحزم، ثم قم بتثبيت Flask:bashpython3 -m venv venv source venv/bin/activate pip install flask -
إنشاء ملف التطبيق:
الآن، قم بإنشاء ملف يسمىapp.pyيحتوي على الشيفرة التالية:pythonfrom flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) -
تشغيل التطبيق محلياً:
قم بتشغيل التطبيق باستخدام الأمر:bashpython app.pyافتح متصفح الإنترنت وادخل
http://localhost:5000لترى التطبيق يعمل.
بناء Dockerfile
الآن، لكي نقوم بنقل التطبيق إلى Docker، يجب أن ننشئ ملف Dockerfile يحتوي على التعليمات اللازمة لبناء الصورة الخاصة بالتطبيق.
-
إنشاء Dockerfile:
في نفس مجلد تطبيق Flask، أنشئ ملفاً جديداً باسمDockerfile(بدون امتداد) وابدأ بكتابة التعليمات التالية:Dockerfile# استخدم صورة Python 3.8 كأساس FROM python:3.8-slim # تعيين مجلد العمل داخل الحاوية WORKDIR /app # نسخ ملفات التطبيق إلى الحاوية COPY . /app # تثبيت الحزم المطلوبة RUN pip install --no-cache-dir -r requirements.txt # تشغيل التطبيق على المنفذ 5000 CMD ["python", "app.py"] -
إنشاء ملف requirements.txt:
قم بإنشاء ملفrequirements.txtلاحتواء الحزم التي يحتاجها التطبيق:bashflask
بناء الصورة باستخدام Docker
بعد إنشاء Dockerfile وملف requirements.txt، يمكنك الآن بناء صورة Docker لتطبيق Flask الخاص بك:
-
بناء الصورة:
قم بتشغيل الأمر التالي من نفس المجلد الذي يحتوي على Dockerfile:bashdocker build -t flask-app . -
التأكد من أن الصورة تم إنشاؤها بنجاح:
تحقق من الصور باستخدام الأمر:bashdocker images
تشغيل الحاوية (Container)
الآن بعد أن تم بناء الصورة بنجاح، يمكننا تشغيل التطبيق داخل حاوية Docker.
-
تشغيل الحاوية:
لتشغيل التطبيق داخل حاوية Docker، استخدم الأمر:bashdocker run -p 5000:5000 flask-app -
التحقق من تشغيل التطبيق:
افتح متصفح الإنترنت وادخل علىhttp://localhost:5000لرؤية تطبيق Flask يعمل داخل Docker.
نشر التطبيق على الخادم
لنفترض أنك ترغب في نشر تطبيق Flask باستخدام Docker على خادم بعيد. سنتبع هذه الخطوات:
-
إعداد الخادم البعيد:
يجب أن يكون لديك خادم يعمل بنظام أوبنتو 18.04 مع تثبيت Docker عليه. -
نقل الملفات إلى الخادم:
قم بنقل مجلد التطبيق إلى الخادم البعيد باستخدام SCP أو rsync:bashscp -r /path/to/your/app username@remote-server:/path/to/destination -
بناء الصورة على الخادم البعيد:
بمجرد نقل الملفات إلى الخادم، قم بتسجيل الدخول إلى الخادم، وانتقل إلى المجلد الذي يحتوي على Dockerfile، ثم قم ببناء الصورة:bashdocker build -t flask-app . -
تشغيل الحاوية على الخادم:
بعد بناء الصورة على الخادم، قم بتشغيل الحاوية:bashdocker run -p 5000:5000 flask-app -
إعداد جدار الحماية:
تأكد من فتح المنفذ 5000 في جدار الحماية على الخادم البعيد، حتى يمكن الوصول إلى التطبيق من الإنترنت:bashsudo ufw allow 5000 -
الوصول إلى التطبيق:
افتح متصفح الإنترنت وادخل على عنوان الخادم البعيد مع المنفذ 5000، مثل:bashhttp://your-server-ip:5000
تحسينات إضافية
استخدام Nginx مع Docker
لتوفير مزيد من الأمان والأداء لتطبيق Flask الخاص بك، يمكن استخدام Nginx كخادم ويب أمامي لخدمة التطبيق. ستحتاج إلى إضافة إعدادات Nginx لتوجيه الطلبات إلى تطبيق Flask الخاص بك داخل Docker.
استخدام Docker Compose
إذا كنت تستخدم عدة حاويات (على سبيل المثال، تطبيق Flask مع قاعدة بيانات مثل PostgreSQL)، يمكنك استخدام Docker Compose لتسهيل إدارة الحاويات. يمكنك إنشاء ملف docker-compose.yml يصف كيفية بناء وتشغيل الحاويات.
الخاتمة
لقد استعرضنا في هذا المقال كيفية بناء تطبيق Flask بسيط باستخدام Python ونشره باستخدام Docker على نظام أوبنتو 18.04. باستخدام Docker، يمكن تشغيل التطبيق في بيئات متعددة بسهولة، مما يتيح للمطورين نشر التطبيقات بشكل موثوق وقابل للتكرار.

