כיצד להעלות יישום Flask API של Python על Docker

אם אתה חדש בכל הנוגע ל- Docker ולתופפים, ללמוד לפרוס אפליקציית API של Python Flask על Docker הוא דרך נהדרת להתחיל. Docker מאפשר לך ליצור מכלים אפליקציות עם טכנולוגיית קליה ואבטחה לפרסום מהיר של אפליקציות.

במדריך הזה, תלמד להפוך למומחה שלך בהגדרה ובפרסום אפליקציות API של Python Flask על תופפים של Docker.

התכוננו והתחילו לפרסם!

נדרשים

אם תרצה לעקוב אחר השלבים בדיוק, יהיה עליך להתקין את הבאים:

  • מחשב Ubuntu עם Docker מותקן. מדריך זה משתמש ב- Ubuntu 18.04.5 LTS עם Docker v19.03.8.
  • Python v3.9 או מאוחר יותר מותקן על מחשב Ubuntu. מדריך זה ישתמש ב- Python v3.9.2 על מחשב Ubuntu.
  • חבילת Elinks מותקנת על מחשב Ubuntu המשמש לבדיקת ה- API במדריך זה.

יצירת יישום Flask API ב-Python (API קבלה ופעולה)

התחלת המדריך על ידי יצירת יישום Flask ב-Python. Flask הוא סביר, מיקרו-סבר פריימוורק ליישומי אינטרנט שכתבו ב-Python. Flask מספק כלים נוחים ותכונות ליצירת יישומים אינטרנטיים ב-Python.

לפני שתיצור יישום Flask ב-Python, עליך להתקין Flask וסביבת פיתוח וירטואלית שבה Flask יפעיל את היישום.

1. התחבר למכונת ה-Ubuntu שלך באמצעות לקוח SSH האהוב עליך.

2. לאחר מכן, הפעל את הפקודות הבאות כדי ליצור ספרייה בשם ~/docker_python_flask_demo ולהחליף אליה. הספרייה הזו תכיל את כל הקבצים הדרושים על ידי Python ו-Docker כדי להפעיל יישום.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. הפעל את הפקודה pip למטה כדי להתקין סביבת פיתוח וירטואלית של Python (virtualenv) הנדרשת על ידי Flask כדי להפעיל את היישומים. סביבת פיתוח וירטואלית של Python מציעה לבינתיים וחבילות מותקנות ליישומים בודדים כדי למנוע סכסוכים עם יישומים אחרים.

pip install virtualenv
Installing the environment needed by Flask to execute the applications

4. הפעל את הפקודה virtualenv למטה כדי ליצור ולהפעיל סביבת פיתוח וירטואלית באמצעות מודול venv.

virtualenv venv
Creating the virtual environment for Python

5. כעת, הפעל את הפקודה למטה כדי להתקין את חבילת Python flask עם מנהל החבילות pip.

pip install flask

6. הפעל את הפקודה הבאה כדי להפעיל חבילות בסביבת הפיתוח הווירטואלית שלך לפני שתתקין או תשתמש בהן. פעולה זו משנה את משתנה הסביבה VIRTUAL_ENV כך שיצביע לסביבת הפיתוח הווירטואלית שלך ומקדם את בינארי ה-Python של סביבת הפיתוח הווירטואלית שלך לנתיב, כך שתוכל להפעיל את בינארי הנכונים.

source venv/bin/activate

7. צור קובץ נוסף, שמקובל שם requirements.txt, והגדר את התלות של אפליקציית Flask, כמצוין למטה.

Flask==2.0.2

8. צור קובץ טקסט בשם ~/docker_python_flask_demo/app.py ומלא את הקובץ בקוד Python הבא.

הקוד Python שלמטה מייבא את מחלקת flask ויוצרת מופע של מחלקה בשם app. המופע של מחלקה app מכיל שני פונקציות login() שמופעלות כאשר משתמשים שולחים בקשות בעמוד /login.

הפונקציה success() מתבצעת, ומציגה את ההודעה "name-of-the-user" בדפדפן.


from flask import Flask , redirect , url_for , request 
# מיובאת את מחלקת Flask


# app הוא האובייקט או מופע של Flask

app = Flask(__name__)

# app.route מודיעה ל-Flask על ה-URL שיש להשתמש בו על ידי הפונקציה

@app.route('/success/<name>')

# יוצרת פונקציה בשם success

def success(name):
    return 'welcome %s' % name

@app.route('/login', methods = ['GET','POST'])

# יוצרת פונקציה בשם login

def login():
    if request.method == 'POST':
       user = request.form['adamlistek']
       return redirect(url_for('success', name = user)) 
    else:
       return "INVALID"

# התוכניות מופעלות מכאן בשרת פיתוח (לוקאלית במערכת שלך)


# עם אפשרות לתיקון בזמן אמת
  
if __name__ == '__main__':
   app.run(debug = True)

9. צור קובץ נוסף בשם ~/docker_python_flask_demo/form.html והעתק/הדבק את הקוד למטה.

הרצת הקוד HTML למטה יוצרת טופס עם שני קלטים; אחד הוא טקסט לספק את שמך והשני הוא כפתור לשליחה.

כשאתה מזין שם משתמש ולוחץ על הכפתור לשליחה, בקשת פוסט נשלחת ו־Flask מבצעת פונקציה נוספת ופותחת דף אינטרנט חדש ב־http://localhost:5000/success/<username>.

<html>
  <body>
    <form action="http://localhost:5000/login" method="post">
      <p>Please Enter your name</p>
      <p><input type="text" name="adamlistek" /></p>
      <p><input type="submit" value="Submit" /></p>
    </form>
  </body>
</html>

10. לבסוף, הריץ את הפקודה Python למטה כדי לוודא שהיישום (app.py) עובד מקומית על המערכת שלך.

Python app.py

כפי שניתן לראות למטה, היישום פועל בהצלחה על המחשב האובונטו אך לא על Docker. בחלקים הבאים תשיג אותו היישום על Docker.

Running the Python application on the ubuntu machine.

יצירת קובץ Dockerfile כדי לפרסם את היישום של ה־Python Flask API

פשוט יצרת ווידאת את היישום של Python Flask עובד מקומית על המחשב שלך. אך לפני פרסום היישום על Docker, תיצור תחילה Dockerfile כדי להגדיר את כל הסטים של הוראות לבניית דוקר תמונה.

צור קובץ בשם Dockerfile בתיקיית ~/docker_python_flask_demo והעתק/הדבק את התוכן לדוקרפייל.

`Docker` תשתמש בקובץ `Dockerfile` הזה כדי להריץ את כל ההוראות או הפקודות הנדרשות כדי לבנות תמונת Docker חדשה מעל תמונת הבסיס (`ubuntu:18.04`).

# מגדיר את תמונת הבסיס להוראות הבאות
FROM ubuntu:18.04
# מגדיר את התיקיה העבודה בתוך התוכנית
WORKDIR /app
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev
# מעתיק את הקבצים לתיקיה העבודה
COPY form.html /app/form.html
# מעתיק את קבצי התלות לתיקיה העבודה
COPY requirements.txt /app/requirements.txt
# מתקין תלות
RUN pip install -r requirements.txt
# מעתיק הכל לתיקיה העבודה
COPY . /app
# פקודה להפעלה בהתחלת התכון
CMD [ "python" , "./app.py" ]

עכשיו, הריץ את הפקודה tree למטה כדי לוודא שכל הקבצים הנדרשים להפעלת יישום Python Flask מוכנים בתיקית העבודה (~/docker_python_flask_demo).

tree  
Verifying all Required Files to Run the Flask Application Exist

בניית תמונת Docker עבור יישום API של Python Flask

יש לך כעת את הקבצים הנדרשים כדי להפעיל יישום Python Flask, אך לא יקרה כלום עד שתבנה תמונה. יש להריץ את הפקודה docker build כדי לבנות תמונת Docker בהתבסס על ההוראות שקבעת בקובץ `Dockerfile`.

הפעל את פקודת docker build למטה כדי לבנות תמונת Docker בתיקייה הנוכחית (.). פקודה זו מסמנת (-t) את התמונה כ-flask-image גרסה 1 (:v1).

sudo docker build -t flask-image:v1 .
Building the Docker Image

עכשיו, הפעל את פקודת docker למטה כדי לרשום את כל התמונות הזמינות.

sudo docker images

מטה, ניתן לראות מגוון תכונות שונות המוחזרות, כמו REPOSITORY. שים לב ששם ה-REPOSITORY הוא flask-image ומסומן עם גרסה (v1), כפי שמוצג למטה.

Verifying the New Docker Image (flask-image)

הפעלת אפליקציית Python Flask בקונטיינר Docker

לאחר יצירת תמונת Docker, כעת תוכל להפעיל את אפליקציית Flask של Python בקונטיינר Docker. קונטיינר Docker ארוז בקוד ובתלותיו כדי להפעיל אפליקציות במהירות.

1. בצע את הפקודה docker run למטה כדי לבצע את הפעולות הבאות:

  • התחל את הקונטיינר ב-מצב נתיח (-d), כך שירוץ כתהליך רקע ויחזיר את פלט הקונסולה לאחר היצירה.
  • ממפה את פורט המארח של Docker (-p 5000:5000) עם פורט הקונטיינר.
  • הפעל את קונטיינר Docker (flask-image:v1)
sudo docker run -d -p 5000:5000 flask-image:v1

2. לאחר מכן, הרץ את הפקודה docker למטה כדי לרשום את כל המכולות במנוע ה-Docker. וודא ש-Docker יצר בהצלחה את המכולה.

sudo docker ps -a
Verifying the Docker container in the Docker engine

3. לבסוף, הרץ את הפקודה למטה כדי לפתוח את דפדפן האינטרנט שלך במכונת ה-Ubuntu באמצעות elinks.

elinks form.html

הפקודה פותחת את דפדפן האינטרנט בטרמינל ומבקשת שם, כפי שמוצג למטה.

הזן את שמך ולחץ על כפתור השליחה.

Accessing the login web page with the form to enter your name

4. כפי שאתה יכול לראות למטה, לאחר לחיצה על כפתור השליחה, הפונקציה של ההתחברות מפנה לפונקציה של ההצלחה באפליקציה של Flask.

Displaying the welcome message in the web browser

מסקנה

מטרת מדריך זה הייתה לעזור לך בתהליך של הקמת מכולת API של Python Flask באמצעות תמונות Docker. גם נגעת באיך להשיק מכולות Python Flask באמצעות Dockerfiles, מה שמאפשר לך לערוך ולבנות מכולות מותאמות אישית לבחירתך.

אז אילו אפליקציות נוספות יש לך בראש להפעיל על מכולת Docker? אולי מכולת Docker של MongoDB?

Source:
https://adamtheautomator.com/python-flask-api/