تطوير ونشر تطبيق Flask باستخدام Docker على Ubuntu 18.04
في عالم تطوير البرمجيات، يعد Flask وDocker من التقنيات الرائدة التي توفر بيئة تطوير ونشر فعّالة لتطبيقات الويب. سأوجهك خطوة بخطوة عبر عملية بناء تطبيق Flask ونشره باستخدام Docker على نظام Ubuntu 18.04.
أولاً وقبل البدء، تأكد من تثبيت Python على نظام Ubuntu الخاص بك. يمكنك فعل ذلك باستخدام الأمر التالي:
-
تحويل مصفوفة السلاسل إلى قاموس في Swift09/02/2024
-
حل مشكلة DNS في Docker بسهولة25/03/2024
-
كيفية استرداد بيانات SQL مع التواريخ المحددة14/03/2024
bashsudo apt update sudo apt install python3 python3-pip
ثم، قم بتثبيت Flask باستخدام pip:
bashpip3 install flask
الآن، قم بإنشاء تطبيق Flask بسيط. أنشئ ملفًا باسم app.py
وضع فيه الكود التالي:
pythonfrom flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Dockerized Flask App!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
بعد ذلك، قم بإنشاء ملف requirements.txt
لتحديد الاعتماديات:
textFlask==2.1.0
الآن، حان وقت بناء Dockerfile. أنشئ ملفًا باسم Dockerfile
في نفس دليل التطبيق وأضف فيه الكود التالي:
dockerfile# Use the official Python image FROM python:3.8-slim # Set the working directory in the container WORKDIR /app # Copy the dependencies file to the working directory COPY requirements.txt . # Install any dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy the content of the local src directory to the working directory COPY . . # Expose port 5000 EXPOSE 5000 # Define the command to run the application CMD ["python", "./app.py"]
قم ببناء الصورة باستخدام Docker:
bashdocker build -t flask-docker-app .
والآن، يمكنك تشغيل التطبيق في وحدة Docker:
bashdocker run -p 5000:5000 flask-docker-app
ستتمكن الآن من الوصول إلى تطبيق Flask عبر http://localhost:5000
في المتصفح الخاص بك.
لنقل الأمور إلى مستوى أعلى، يمكنك استخدام Docker Compose لتسهيل عملية التكوين. أنشئ ملفًا باسم docker-compose.yml
:
yamlversion: '3'
services:
web:
build: .
ports:
- "5000:5000"
ثم، قم بتشغيل التطبيق باستخدام Docker Compose:
bashdocker-compose up
بهذا، قد قمت بنجاح بإنشاء تطبيق Flask ونشره باستخدام Docker على نظام Ubuntu 18.04. هذه العملية تساعد في تسهيل التنقل وتشغيل التطبيق بيئة معزولة، مما يسهل على الفريق تنمية التطبيق بسهولة ونقله بين البيئات بدون مشاكل.
المزيد من المعلومات
بالتأكيد، دعنا نضيف المزيد من التفاصيل والمعلومات لجعل هذا الرحلة أكثر إثراءً.
استخدام Docker Compose:
Docker Compose يسمح لك بتحديد وإدارة متعدد الحاويات بسهولة. يمكننا تحسين ملف docker-compose.yml
لتضمين خدمة لقاعدة البيانات، مثلاً خدمة PostgreSQL، وربطها بتطبيق Flask.
yamlversion: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: flask_app_db
استخدام بيئات الـ environment:
قد تكون هناك حاجة إلى تكوين بيئة التشغيل. يمكنك إضافة ملف .env
لتحديد المتغيرات البيئية. قم بتعديل ملف docker-compose.yml
لاستخدامه:
yamlversion: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
env_file:
- .env
db:
image: postgres:latest
environment:
POSTGRES_DB: flask_app_db
التحكم في التطبيق بشكل أفضل:
يمكنك استخدام ملف config.py
لتكوين تطبيق Flask بشكل أفضل، مثل تحديد وضع التشغيل ومفاتيح التطبيق السرية.
python# config.py
class Config:
DEBUG = False
SECRET_KEY = 'your_secret_key'
ثم قم بتحديث app.py
لاستخدام هذا التكوين:
pythonfrom flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
# ... (الكود السابق)
إعدادات Nginx كـ Reverse Proxy:
لتحسين الأمان والأداء، يمكنك استخدام Nginx كـ reverse proxy أمام تطبيق Flask. يمكن تكوينه لإعادة التوجيه المرور إلى تطبيقك وتوفير SSL.
استخدام Docker Swarm أو Kubernetes:
إذا كنت تتوقع تطوير تطبيقك ليكون على نطاق كبير، يمكنك النظر في استخدام Docker Swarm أو Kubernetes لإدارة الحاويات على مستوى الإنتاج.
تنقيح وحدة التطبيق:
يمكن تحسين وحدة التطبيق باستمرار عن طريق تقديم ميزات جديدة، وتحسين الأمان والأداء. كما يمكنك اختبار وحدة التطبيق بشكل أوسع باستخدام أطر اختبار الوحدات واختبارات التكامل.
تلك هي بعض التفاصيل الإضافية التي يمكن أن تساعدك في فهم وبناء تطبيق Flask ونشره باستخدام Docker على نظام Ubuntu 18.04. استمتع بتطوير التطبيق الخاص بك والاستفادة من قدرات الحاويات لتبسيط عمليات النشر وتكوين البيئة.