JavaRush /Курси /Модуль 2: Fullstack /Демонстрація роботи з Docker’ом

Демонстрація роботи з Docker’ом

Модуль 2: Fullstack
Рівень 18 , Лекція 0
Відкрита

Ласкаво просимо на фінальний рівень курсу по Docker!

На цьому рівні ми зберемо докупи всі набуті знання та навички.

У лекціях можуть траплятися незнайомі вам мови програмування або технології. Вам доведеться прописувати порти або додавати назви методів – і все це на основі готового коду, де вже зроблено 99% роботи.

Не хвилюйтесь, якщо щось здасться незнайомим – це зроблено навмисно для прокачування навичок: "я цього не знаю, але можу швидко розібратися".

1.1 Постановка задачі

Давай створимо невеликий багатоконтейнерний додаток і покроково розберемо весь процес розробки: від постановки задачі до демонстрації готового продукту.

Мета: створити багатоконтейнерний додаток для управління задачами, який дозволяє користувачам створювати, редагувати, видаляти задачі та призначати їх іншим користувачам. Додаток складатиметься з трьох основних компонентів: фронтенду на ReactJS, бекенду на Python (Flask) і бази даних PostgreSQL.

Основні задачі:

  1. Визначити функціональні вимоги для кожного компонента додатку.
  2. Обрати використовувані технології та інструменти.
  3. Підготувати середовище для розробки.

1.2 Визначення функціональних вимог

Функціональні вимоги для застосунку управління завданнями:

  1. Реєстрація та авторизація користувачів:
    • Користувач може зареєструватися в системі.
    • Користувач може авторизуватися в системі.
  2. Управління завданнями:
    • Користувач може створювати завдання.
    • Користувач може редагувати завдання.
    • Користувач може видаляти завдання.
    • Користувач може переглядати список завдань.
    • Користувач може призначати завдання іншим користувачам.
  3. Перегляд та фільтрація завдань:
    • Користувач може фільтрувати завдання за статусом (виконані/невиконані).
    • Користувач може переглядати завдання, призначені іншим користувачам.

1.3 Визначення використовуваних технологій та інструментів

Для реалізації цього застосунку будуть використані наступні технології та інструменти:

  1. Frontend:
    • ReactJS: бібліотека для створення інтерфейсів користувача.
    • Axios: бібліотека для виконання HTTP-запитів.
  2. Backend:
    • Python: мова програмування для створення серверної частини.
    • Flask: веб-фреймворк для створення REST API.
    • SQLAlchemy: ORM для взаємодії з базою даних.
  3. Database:
    • PostgreSQL: реляційна база даних для зберігання інформації про користувачів та завдання.
  4. Контейнеризація та оркестрація:
    • Docker: платформа для контейнеризації застосунків.
    • Docker Compose: інструмент для керування багатоконтейнерними застосунками.

1.4 Підготовка середовища для розробки

Для успішного виконання проєкту необхідно налаштувати середовище для розробки і впевнитися, що всі необхідні інструменти встановлені.

Кроки для підготовки середовища:

  1. Встановлення Docker:
    • Якщо ти ще цього не зробив, повернись до лекції 4 першого рівня або слідуй інструкціям на офіційному сайті Docker.
  2. Встановлення Docker Compose:
    • Якщо Docker Compose ще не встановлено, звернись до лекції 2 рівня 4 або слідуй інструкціям на офіційному сайті Docker Compose.
  3. Створення структури проєкту:
    • Створи директорію для проєкту і основні піддиректорії для кожного сервісу:
Terminal

mkdir task_management_app
cd task_management_app
mkdir frontend backend database
        
  1. Ініціалізація проєкту:
    • У директорії frontend ініціалізуй новий ReactJS проєкт:
Terminal

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

• У директорії backend створи структуру для Python/Flask додатку:

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 створи Dockerfile для PostgreSQL (якщо необхідно):

Terminal

cd database
touch Dockerfile
cd ..
        

1.5 Приклад вмісту файлів:

Файл backend/app/__init__.py:

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:

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:

Python

from app import app

@app.route('/')
def index():
    return "Привіт, Task Management App!"
    

Файл backend/run.py:

Python

from app import app

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

Файл backend/requirements.txt:

Text

Flask
Flask-SQLAlchemy
psycopg2-binary
    
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ