CodeGym /Kurslar /Docker SELF /Docker ilə işin nümayişi

Docker ilə işin nümayişi

Docker SELF
Səviyyə , Dərs
Mövcuddur

1.1 Problemin qoyuluşu

Gəlin kiçik bir çox konteynerli tətbiq yaradaq və yaradılması prosesində addım-addım başdan (problemin qoyuluşundan) sona qədər – hazır tətbiqin təqdimatına qədər gedək.

Məqsəd: İstifadəçilərə tapşırıqlar yaratmağa, redaktə etməyə, silməyə və onları müxtəlif istifadəçilərə təyin etməyə imkan verən çox konteynerli tapşırıq idarəetmə tətbiqi yaratmaq. Tətbiq üç əsas komponentdən ibarət olacaq: ReactJS-də frontend, Python (Flask)-də backend və PostgreSQL-də məlumat bazası.

Əsas vəzifələr:

  1. Tətbiqin hər bir komponenti üçün funksional tələbləri müəyyənləşdirmək.
  2. İstifadə olunacaq texnologiyaları və alətləri müəyyənləşdirmək.
  3. İnkişaf üçün mühit hazırlamaq.

1.2 Funksional tələblərin təyini

Task management tətbiqi üçün funksional tələblər:

  1. İstifadəçilərin qeydiyyatı və avtorizasiyası:
    • İstifadəçi qeydiyyatdan keçə bilər.
    • İstifadəçi sistemə daxil ola bilər.
  2. Taskların idarə olunması:
    • İstifadəçi tasklar yarada bilər.
    • İstifadəçi taskları redaktə edə bilər.
    • İstifadəçi taskları silə bilər.
    • İstifadəçi taskların siyahısını görə bilər.
    • İstifadəçi taskları digər istifadəçilərə təyin edə bilər.
  3. Tasklara baxış və filtrasiya:
    • İstifadəçi taskları statusuna görə filtrləyə bilər (yerinə yetirilmiş/yerinə yetirilməmiş).
    • İstifadəçi digər istifadəçilərə təyin edilmiş tasklara baxa bilər.

1.3 İstifadə olunan texnologiyalar və alətlərin müəyyən edilməsi

Bu tətbiqin reallaşdırılması üçün aşağıdakı texnologiyalar və alətlərdən istifadə olunacaq:

  1. Frontend:
    • ReactJS: İstifadəçi interfeyslərinin yaradılması üçün kitabxana.
    • Axios: HTTP sorğularının yerinə yetirilməsi üçün kitabxana.
  2. Backend:
    • Python: Server tərəfinin yaradılması üçün proqramlaşdırma dili.
    • Flask: REST API yaratmaq üçün veb-framework.
    • SQLAlchemy: Verilənlər bazası ilə qarşılıqlı əlaqə üçün ORM.
  3. Database:
    • PostgreSQL: İstifadəçilər və tapşırıqlar haqqında məlumatın saxlanması üçün əlaqəli verilənlər bazası.
  4. Konteynerləşmə və orkestrasiya:
    • Docker: Tətbiqlərin konteynerləşdirilməsi üçün platforma.
    • Docker Compose: Çox konteynerli tətbiqlərin idarə edilməsi üçün alət.

1.4 İnkişaf mühitinin hazırlanması

Layihəni uğurla həyata keçirmək üçün inkişaf mühitini quraşdırmaq və bütün lazımi vasitələrin mövcudluğuna əmin olmaq lazımdır.

Mühitin hazırlanması üçün addımlar:

  1. Docker-in quraşdırılması:
    • Öz əməliyyat sisteminizdə Docker-in quraşdırılması üçün rəsmi Docker veb-saytındakı təlimatlara əməl edin.
  2. Docker Compose-in quraşdırılması:
    • Docker Compose programını quraşdırmaq üçün rəsmi Docker Compose veb-saytındakı təlimatlara əməl edin.
  3. Layihə strukturunun yaradılması:
    • Layihə üçün bir direktor və hər bir servis üçün əsas alt-dizinləri yaradın:
  4. Terminal
    
    mkdir task_management_app
    cd task_management_app
    mkdir frontend backend database
        
  5. Layihənin başlatılması:
    • frontend direktoryasında yeni bir ReactJS layihəsini başlat:
Terminal

cd frontend
npx create-react-app .
cd ..

• backend direktoryasında Python/Flask tətbiqi üçün struktur yaradın:

Terminal

cd backend
mkdir app
touch app/__init__.py
touch app/models.py
touch app/routes.py
touch run.py
touch requirements.txt
cd ..

• database direktoryasında PostgreSQL üçün Dockerfile yaradın (ehtiyac varsa):

Terminal

cd database
touch Dockerfile
cd ..

1.5 Fayl məzmununa nümunə:

backend/app/__init__.py faylı:

Python

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
        
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://taskuser:taskpassword@database:5432/taskdb'
db = SQLAlchemy(app)
        
from app import routes

backend/app/models.py faylı:

Python

from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    tasks = db.relationship('Task', backref='owner', lazy=True)
        
class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120), nullable=False)
    description = db.Column(db.Text, nullable=True)
    owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

backend/app/routes.py faylı:

Python

from app import app

@app.route('/')
def index():
    return "Salam, Vəzifələr idarəetmə tətbiqi!"

backend/run.py faylı:

Python

from app import app

if __name__ == '__main__':
    app.run(host='0.0.0.0')

backend/requirements.txt faylı:

Text

Flask
Flask-SQLAlchemy
psycopg2-binary
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION