برنامه Task Manager با Flask و MySQL

Summarize this content to 400 words in Persian Lang
بررسی اجمالی پروژه
این پروژه یک اپلیکیشن Task Manager ساخته شده با Flask و MySQL. این یک API ساده RESTful برای مدیریت وظایف ارائه می دهد و عملیات های اولیه CRUD (ایجاد، خواندن، حذف) را نشان می دهد.
این برنامه برای درک اینکه چگونه برنامه های Flask می توانند با استفاده از Docker کانتینری شوند و با پایگاه داده MySQL متصل شوند، عالی است.
ویژگی ها
کارهای جدید اضافه کنید
مشاهده تمام وظایف
یک کار را با شناسه حذف کنید
کد فلاسک: app.py
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error
app = Flask(__name__)
# Database connection function
def get_db_connection():
try:
connection = mysql.connector.connect(
host=”db”,
user=”root”,
password=”example”,
database=”task_db”
)
return connection
except Error as e:
return str(e)
# Route for the home page
@app.route(“https://dev.to/”)
def home():
return “Welcome to the Task Management API! Use /tasks to interact with tasks.”
# Route to create a new task
@app.route(‘/tasks’, methods=[‘POST’])
def add_task():
task_description = request.json.get(‘description’)
if not task_description:
return jsonify({“error”: “Task description is required”}), 400
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({“error”: connection}), 500
cursor = connection.cursor()
cursor.execute(“INSERT INTO tasks (description) VALUES (%s)”, (task_description,))
connection.commit()
task_id = cursor.lastrowid
cursor.close()
connection.close()
return jsonify({“message”: “Task added successfully”, “task_id”: task_id}), 201
# Route to get all tasks
@app.route(‘/tasks’, methods=[‘GET’])
def get_tasks():
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({“error”: connection}), 500
cursor = connection.cursor()
cursor.execute(“SELECT id, description FROM tasks”)
tasks = cursor.fetchall()
cursor.close()
connection.close()
task_list = [{“id”: task[0], “description”: task[1]} for task in tasks] return jsonify(task_list), 200
# Route to delete a task by ID
@app.route(‘/tasks/’, methods=[‘DELETE’])
def delete_task(task_id):
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({“error”: connection}), 500
cursor = connection.cursor()
cursor.execute(“DELETE FROM tasks WHERE id = %s”, (task_id,))
connection.commit()
cursor.close()
connection.close()
return jsonify({“message”: “Task deleted successfully”}), 200
if __name__ == “__main__”:
app.run(host=”0.0.0.0″)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اسکریپت راه اندازی پایگاه داده MySQL
یک اسکریپت MySQL با نام init-db.sql برای تنظیم پایگاه داده و جدول وظایف ایجاد کنید:
برای ایجاد اسکریپت init-db.sql مراحل زیر را دنبال کنید:
جدید ایجاد کنید فایل در فهرست پروژه شما:
به پوشه پروژه بروید و یک فایل جدید با نام ایجاد کنید init-db.sqlاضافه کنید SQL دستورات برای تنظیم پایگاه داده و جدول وظایف:
باز کنید init-db.sql در یک ویرایشگر متن و دستورات SQL زیر را اضافه کنید:
CREATE DATABASE IF NOT EXISTS task_db;
USE task_db;
CREATE TABLE IF NOT EXISTS tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(255) NOT NULL
);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ذخیره فایل:
من فایل را به عنوان ذخیره کردم init-db.sql در پوشه پروژه که در آن من docker-compose.yml واقع شده است.
در docker-compose.yml:
در من docker-compose.yml فایل، من پیکربندی حجمی را دارم که به این اسکریپت اشاره دارد.
در زیر است docker-compose.yml فایل
پیکربندی داکر
docker-compose.yml:
version: ‘3’
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: task_db
ports:
– “3306:3306”
volumes:
– db_data:/var/lib/mysql
– ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
web:
build: .
ports:
– “5000:5000”
depends_on:
– db
environment:
FLASK_ENV: development
volumes:
– .:/app
volumes:
db_data:
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پیکربندی تضمین میکند که وقتی ظرف MySQL شروع میشود، آن را اجرا میکند init-db.sql اسکریپت برای راه اندازی task_db پایگاه داده و ایجاد کنید وظایف جدول
توجه: این docker-entrypoint-initdb.d/ دایرکتوری توسط MySQL ظروف برای اجرا sql اسکریپت ها در طول راه اندازی اولیه کانتینر.
توضیح:
1. نسخه: '3': نسخه استفاده شده از Docker Compose را مشخص می کند.
2. خدمات:
دسی بی:
تصویر: mysql:5.7: از تصویر MySQL 5.7 استفاده می کند.
محیط زیست: متغیرهای محیطی را برای کانتینر MySQL تنظیم می کند:
MYSQL_ROOT_PASSWORD: رمز عبور ریشه برای MySQL.
MYSQL_DATABASE: پایگاه داده ای که در هنگام راه اندازی ایجاد می شود.
پورت ها: پورت 3306 کانتینر MySQL را به پورت 3306 میزبان شما نگاشت می کند.
حجم ها:
db_data:/var/lib/mysql: داده های پایگاه داده را در یک جلد Docker به نام حفظ می کند db_data.
./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql: را سوار می کند init-db.sql اسکریپت به MYSQL دایرکتوری مقداردهی اولیه کانتینر بنابراین هنگام شروع کانتینر اجرا می شود.
وب:
ساخت: .: تصویر Docker را برای برنامه Flask شما با استفاده از Dockerfile در دایرکتوری فعلی
پورت ها: پورت 5000 برنامه Flask را به پورت 5000 میزبان شما نگاشت می کند.
بستگی_به: تضمین می کند که دسی بی سرویس قبل از وب سرویس شروع می شود.
محیط زیست: متغیر محیطی را برای Flask تنظیم می کند.
حجم ها: دایرکتوری پروژه فعلی را در /برنامه دایرکتوری داخل کانتینر بخش جلد ###:
db_data: حجمی با نام db_data را برای حفظ داده های MySQL بین راه اندازی مجدد کانتینر تعریف می کند.
Dockerfile:
دستورالعمل های ساخت اپلیکیشن Flask را تعریف کنید:
FROM python:3.9-slim
WORKDIR /app
# Install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt
# Install wait-for-it tool#
RUN apt-get update && apt-get install -y wait-for-it
#Copy the application code>
COPY . .
# Use wait-for-it to wait for DB and start the Flask app
CMD [“wait-for-it”, “db:3306”, “–“, “python”, “app.py”]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این Dockerfile یک محیط Python سبک را برای یک برنامه Flask تنظیم می کند:
1. تصویر پایه: از python: 3.9-slim برای حداقل زمان اجرای پایتون استفاده می کند.Working Directory: /app را به عنوان دایرکتوری کاری تنظیم می کند.
2. وابستگی ها: الزامات.txt را کپی می کند و وابستگی ها را از طریق pip نصب می کند.
3. نصب ابزار: انتظار برای آن را برای بررسی آمادگی سرویس نصب می کند.
4. کد برنامه: همه کدهای برنامه را در ظرف کپی می کند.
5. دستور راه اندازی: برای اطمینان از اینکه MySQL DB (db:3306) قبل از شروع app.py آماده است، wate-for-it را اجرا می کند.
فایل Requirements.txt
این الزامات. txt مشخص می کند که پروژه پایتون به این نیاز دارد چارچوب فلاسک برای ساخت برنامه های تحت وب و mysql-connector-python برای ارتباط و تعامل با a پایگاه داده MySQL. این بسته ها در داخل نصب خواهند شد داکر ظرف زمانی که pip install -r requires.txt در طول فرآیند ساخت تصویر اجرا می شود. این تضمین می کند که برنامه ابزارهای لازم برای اجرای آن را دارد سرور فلاسک و با پایگاه داده MySQL.
Flask
mysql-connector-python
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پس از ایجاد تمامی فایل ها، مرحله بعدی ساخت و اجرای سرویس است که از دستور زیر برای ساخت و اجرای سرویس استفاده می شود.
docker-compose build
docker-compose up
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای اجرای سرویس در حالت جدا از دستور زیر استفاده کردم docker-compose up
docker-compose up -d
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
وقتی می خواهم سرویس را متوقف کنم از دستور استفاده می کنم
docker-compose down
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اکنون هنگامی که سرویس در حالت در حال اجرا است دستور را اجرا کنید
docker ps
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای اطمینان از کارکرد ظروف
اکنون زمان آن رسیده است که API سرویس را بررسی کنید تا مطمئن شوید که مطابق انتظار کار می کنند.
تست پروژه
به برنامه در http://localhost:5000/ دسترسی پیدا کنید.پس از اجرای دستور بالا همانطور که در تصویر زیر مشاهده می شود، توانستم به برنامه در مرورگر خود دسترسی پیدا کنم.
می توانید از Postman یا curl برای آزمایش نقطه پایانی /tasks برای عملیات POST، GET و DELETE استفاده کنید. در این مورد من از curl استفاده می کنم.
دستورات curl:
متد GET همه وظایف را واکشی می کند.
curl http://localhost:5000/tasks
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توجه داشته باشید که هر زمان که http://localhost:5000/tasks را در مرورگر خود اجرا می کنید، تمام کارهایی را که اضافه کرده اید همانطور که در کار افزودن توضیح داده شده است به شما نشان می دهد.
متد POST وظایفی را در پایگاه داده ایجاد می کند.
curl -X POST http://localhost:5000/tasks -H “Content-Type: application/json” -d ‘{“description”: “Sample Task”}’
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با این کار یک درخواست POST همراه با شرح کار به برنامه Flask شما ارسال می شود. اگر کار با موفقیت اضافه شد، باید پاسخی مانند زیر دریافت کنید:
{
“message”: “Task added successfully”,
“task_id”: 1
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برگه یا گزارش های شبکه مرورگر خود را بررسی کنید تا بررسی کنید که درخواست POST به درستی انجام شده است.
من دستور را چند بار اجرا کردم و قسمتی را که در آن Simple Task میگوید برای تولید خروجیهای مختلف سفارشی کردم. در اینجا دستوراتی که اجرا کردم و خروجیها در تصاویر زیر قابل مشاهده است.
curl -X POST http://localhost:5000/tasks -H “Content-Type: application/json” -d ‘{“description”: “My name is Matthew Tarfa am the Cloud Chief”}’
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
curl -X POST http://localhost:5000/tasks -H “Content-Type: application/json” -d ‘{“description”: “Welcome to my World!”}’
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
curl -X POST http://localhost:5000/tasks -H “Content-Type: application/json” -d ‘{“description”: “I love DevOps!”}’
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
روش DELETE وظایف را با شناسه حذف می کند.
curl -X DELETE http://localhost:5000/tasks/1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
من دستور زیر را برای حذف کار با ID اجرا کردم: 4 همانطور که در تصویر زیر مشاهده می شود وظیفه 4 حذف شده است.
curl -X DELETE http://localhost:5000/tasks/4
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نتیجه گیری
ایجاد یک برنامه Task Manager با استفاده از Flask و MySQL یک راه عالی برای درک اصول توسعه وب سرویس، یکپارچه سازی پایگاه داده و کانتینرسازی با Docker است.
این پروژه نحوه عملکرد وب سرورها و پایگاه های داده را به صورت هماهنگ برای ارائه عملکرد یکپارچه نشان می دهد.
این تجربه یادگیری را در آغوش بگیرید و از آن به عنوان پله ای برای پروژه های توسعه مبتنی بر وب و ابری عمیق تر استفاده کنید.
بررسی اجمالی پروژه
این پروژه یک اپلیکیشن Task Manager ساخته شده با Flask و MySQL. این یک API ساده RESTful برای مدیریت وظایف ارائه می دهد و عملیات های اولیه CRUD (ایجاد، خواندن، حذف) را نشان می دهد.
این برنامه برای درک اینکه چگونه برنامه های Flask می توانند با استفاده از Docker کانتینری شوند و با پایگاه داده MySQL متصل شوند، عالی است.
ویژگی ها
- کارهای جدید اضافه کنید
- مشاهده تمام وظایف
- یک کار را با شناسه حذف کنید
کد فلاسک: app.py
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error
app = Flask(__name__)
# Database connection function
def get_db_connection():
try:
connection = mysql.connector.connect(
host="db",
user="root",
password="example",
database="task_db"
)
return connection
except Error as e:
return str(e)
# Route for the home page
@app.route("https://dev.to/")
def home():
return "Welcome to the Task Management API! Use /tasks to interact with tasks."
# Route to create a new task
@app.route('/tasks', methods=['POST'])
def add_task():
task_description = request.json.get('description')
if not task_description:
return jsonify({"error": "Task description is required"}), 400
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500
cursor = connection.cursor()
cursor.execute("INSERT INTO tasks (description) VALUES (%s)", (task_description,))
connection.commit()
task_id = cursor.lastrowid
cursor.close()
connection.close()
return jsonify({"message": "Task added successfully", "task_id": task_id}), 201
# Route to get all tasks
@app.route('/tasks', methods=['GET'])
def get_tasks():
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500
cursor = connection.cursor()
cursor.execute("SELECT id, description FROM tasks")
tasks = cursor.fetchall()
cursor.close()
connection.close()
task_list = [{"id": task[0], "description": task[1]} for task in tasks]
return jsonify(task_list), 200
# Route to delete a task by ID
@app.route('/tasks/', methods=['DELETE'])
def delete_task(task_id):
connection = get_db_connection()
if isinstance(connection, str): # If connection fails
return jsonify({"error": connection}), 500
cursor = connection.cursor()
cursor.execute("DELETE FROM tasks WHERE id = %s", (task_id,))
connection.commit()
cursor.close()
connection.close()
return jsonify({"message": "Task deleted successfully"}), 200
if __name__ == "__main__":
app.run(host="0.0.0.0")
اسکریپت راه اندازی پایگاه داده MySQL
یک اسکریپت MySQL با نام init-db.sql برای تنظیم پایگاه داده و جدول وظایف ایجاد کنید:
برای ایجاد اسکریپت init-db.sql مراحل زیر را دنبال کنید:
جدید ایجاد کنید فایل در فهرست پروژه شما:
به پوشه پروژه بروید و یک فایل جدید با نام ایجاد کنید init-db.sql
اضافه کنید SQL دستورات برای تنظیم پایگاه داده و جدول وظایف:
باز کنید init-db.sql در یک ویرایشگر متن و دستورات SQL زیر را اضافه کنید:
CREATE DATABASE IF NOT EXISTS task_db;
USE task_db;
CREATE TABLE IF NOT EXISTS tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(255) NOT NULL
);
ذخیره فایل:
من فایل را به عنوان ذخیره کردم init-db.sql در پوشه پروژه که در آن من docker-compose.yml واقع شده است.
در docker-compose.yml:
در من docker-compose.yml فایل، من پیکربندی حجمی را دارم که به این اسکریپت اشاره دارد.
در زیر است docker-compose.yml فایل
پیکربندی داکر
docker-compose.yml:
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: task_db
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
environment:
FLASK_ENV: development
volumes:
- .:/app
volumes:
db_data:
این پیکربندی تضمین میکند که وقتی ظرف MySQL شروع میشود، آن را اجرا میکند init-db.sql اسکریپت برای راه اندازی task_db پایگاه داده و ایجاد کنید وظایف جدول
توجه: این docker-entrypoint-initdb.d/ دایرکتوری توسط MySQL ظروف برای اجرا sql اسکریپت ها در طول راه اندازی اولیه کانتینر.
توضیح:
1. نسخه: '3': نسخه استفاده شده از Docker Compose را مشخص می کند.
2. خدمات:
-
دسی بی:
- تصویر: mysql:5.7: از تصویر MySQL 5.7 استفاده می کند.
-
محیط زیست: متغیرهای محیطی را برای کانتینر MySQL تنظیم می کند:
- MYSQL_ROOT_PASSWORD: رمز عبور ریشه برای MySQL.
- MYSQL_DATABASE: پایگاه داده ای که در هنگام راه اندازی ایجاد می شود.
-
پورت ها: پورت 3306 کانتینر MySQL را به پورت 3306 میزبان شما نگاشت می کند.
-
حجم ها:
- db_data:/var/lib/mysql: داده های پایگاه داده را در یک جلد Docker به نام حفظ می کند db_data.
- ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql: را سوار می کند init-db.sql اسکریپت به MYSQL دایرکتوری مقداردهی اولیه کانتینر بنابراین هنگام شروع کانتینر اجرا می شود.
-
وب:
- ساخت: .: تصویر Docker را برای برنامه Flask شما با استفاده از Dockerfile در دایرکتوری فعلی
- پورت ها: پورت 5000 برنامه Flask را به پورت 5000 میزبان شما نگاشت می کند.
- بستگی_به: تضمین می کند که دسی بی سرویس قبل از وب سرویس شروع می شود.
- محیط زیست: متغیر محیطی را برای Flask تنظیم می کند.
-
حجم ها: دایرکتوری پروژه فعلی را در /برنامه دایرکتوری داخل کانتینر بخش جلد ###:
db_data: حجمی با نام db_data را برای حفظ داده های MySQL بین راه اندازی مجدد کانتینر تعریف می کند.
Dockerfile:
دستورالعمل های ساخت اپلیکیشن Flask را تعریف کنید:
FROM python:3.9-slim
WORKDIR /app
# Install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt
# Install wait-for-it tool#
RUN apt-get update && apt-get install -y wait-for-it
#Copy the application code>
COPY . .
# Use wait-for-it to wait for DB and start the Flask app
CMD ["wait-for-it", "db:3306", "--", "python", "app.py"]
این Dockerfile یک محیط Python سبک را برای یک برنامه Flask تنظیم می کند:
1. تصویر پایه: از python: 3.9-slim برای حداقل زمان اجرای پایتون استفاده می کند.
Working Directory: /app را به عنوان دایرکتوری کاری تنظیم می کند.
2. وابستگی ها: الزامات.txt را کپی می کند و وابستگی ها را از طریق pip نصب می کند.
3. نصب ابزار: انتظار برای آن را برای بررسی آمادگی سرویس نصب می کند.
4. کد برنامه: همه کدهای برنامه را در ظرف کپی می کند.
5. دستور راه اندازی: برای اطمینان از اینکه MySQL DB (db:3306) قبل از شروع app.py آماده است، wate-for-it را اجرا می کند.
فایل Requirements.txt
این الزامات. txt مشخص می کند که پروژه پایتون به این نیاز دارد چارچوب فلاسک برای ساخت برنامه های تحت وب و mysql-connector-python برای ارتباط و تعامل با a پایگاه داده MySQL. این بسته ها در داخل نصب خواهند شد داکر ظرف زمانی که pip install -r requires.txt در طول فرآیند ساخت تصویر اجرا می شود. این تضمین می کند که برنامه ابزارهای لازم برای اجرای آن را دارد سرور فلاسک و با پایگاه داده MySQL.
Flask
mysql-connector-python
پس از ایجاد تمامی فایل ها، مرحله بعدی ساخت و اجرای سرویس است که از دستور زیر برای ساخت و اجرای سرویس استفاده می شود.
docker-compose build
docker-compose up
برای اجرای سرویس در حالت جدا از دستور زیر استفاده کردم docker-compose up
docker-compose up -d
وقتی می خواهم سرویس را متوقف کنم از دستور استفاده می کنم
docker-compose down
اکنون هنگامی که سرویس در حالت در حال اجرا است دستور را اجرا کنید
docker ps
برای اطمینان از کارکرد ظروف
اکنون زمان آن رسیده است که API سرویس را بررسی کنید تا مطمئن شوید که مطابق انتظار کار می کنند.
تست پروژه
به برنامه در http://localhost:5000/ دسترسی پیدا کنید.
پس از اجرای دستور بالا همانطور که در تصویر زیر مشاهده می شود، توانستم به برنامه در مرورگر خود دسترسی پیدا کنم.
می توانید از Postman یا curl برای آزمایش نقطه پایانی /tasks برای عملیات POST، GET و DELETE استفاده کنید. در این مورد من از curl استفاده می کنم.
دستورات curl:
متد GET همه وظایف را واکشی می کند.
curl http://localhost:5000/tasks
توجه داشته باشید که هر زمان که http://localhost:5000/tasks را در مرورگر خود اجرا می کنید، تمام کارهایی را که اضافه کرده اید همانطور که در کار افزودن توضیح داده شده است به شما نشان می دهد.
متد POST وظایفی را در پایگاه داده ایجاد می کند.
curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "Sample Task"}'
با این کار یک درخواست POST همراه با شرح کار به برنامه Flask شما ارسال می شود. اگر کار با موفقیت اضافه شد، باید پاسخی مانند زیر دریافت کنید:
{
"message": "Task added successfully",
"task_id": 1
}
برگه یا گزارش های شبکه مرورگر خود را بررسی کنید تا بررسی کنید که درخواست POST به درستی انجام شده است.
من دستور را چند بار اجرا کردم و قسمتی را که در آن Simple Task میگوید برای تولید خروجیهای مختلف سفارشی کردم. در اینجا دستوراتی که اجرا کردم و خروجیها در تصاویر زیر قابل مشاهده است.
curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "My name is Matthew Tarfa am the Cloud Chief"}'
curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "Welcome to my World!"}'
curl -X POST http://localhost:5000/tasks -H "Content-Type: application/json" -d '{"description": "I love DevOps!"}'
روش DELETE وظایف را با شناسه حذف می کند.
curl -X DELETE http://localhost:5000/tasks/1
من دستور زیر را برای حذف کار با ID اجرا کردم: 4 همانطور که در تصویر زیر مشاهده می شود وظیفه 4 حذف شده است.
curl -X DELETE http://localhost:5000/tasks/4
نتیجه گیری
ایجاد یک برنامه Task Manager با استفاده از Flask و MySQL یک راه عالی برای درک اصول توسعه وب سرویس، یکپارچه سازی پایگاه داده و کانتینرسازی با Docker است.
این پروژه نحوه عملکرد وب سرورها و پایگاه های داده را به صورت هماهنگ برای ارائه عملکرد یکپارچه نشان می دهد.
این تجربه یادگیری را در آغوش بگیرید و از آن به عنوان پله ای برای پروژه های توسعه مبتنی بر وب و ابری عمیق تر استفاده کنید.