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 "Hello, 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
    
3
Задача
Модуль 2: Fullstack, 18 уровень, 0 лекция
Недоступна
Создание контейнеров с Docker Compose
Создание контейнеров с Docker Compose
3
Задача
Модуль 2: Fullstack, 18 уровень, 0 лекция
Недоступна
Запуск React приложения в Docker
Запуск React приложения в Docker
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ