# Кашин Максим ПИбд-42 # Проект "Университеты и Факультеты" ## Часть 1: Создание Docker ### Установка Docker и Docker Compose Перед началом нужно проверить, что Docker работает, иначе использовать инструцию для 1-ой лабораторной. ### 1.1 Файл `docker-compose.yml` В корне проекта файл `docker-compose.yml`. Этот файл будет описывать, как должны быть организованы сервисы. В данном случае рассматриваем только университет, в факультетах анологично. ```yaml version: '3.8' services: university_service: build: context: ./university_service depends_on: - university_db environment: - FLASK_APP=app.py expose: - 8081 university_db: image: postgres:13 environment: POSTGRES_USER: university_user POSTGRES_PASSWORD: password POSTGRES_DB: universitydb ports: - "5432:5432" ``` Объяснение: - `version`: Указывает версию Docker Compose. - `services`: Определяет микросервисы. В данном случае, мы начинаем с `university_service`. - `build`: Указывает, что нужно построить образ для этого сервиса, используя Dockerfile из указанной директории. - `depends_on`: Указывает, что этот сервис зависит от `university_db` (базы данных), которая будет запущена первой. - `environment`: Определяет переменные окружения для сервиса, в данном случае указывая файл Flask. - `expose`: Указывает, что сервис будет доступен на порту 8081 внутри Docker-сети. ### 1.2 Файл Dockerfile для сервиса университетов В каталоге `university_service` файл `Dockerfile`. Этот файл будет содержать инструкции для сборки образа сервиса университетов. В данном случае рассматриваем только университет, в факультетах анологично. ```dockerfile FROM python:3.9-slim # Установка зависимостей RUN apt-get update && apt-get install -y \ gcc \ libpq-dev \ && rm -rf /var/lib/apt/lists/* # Установка рабочей директории WORKDIR /app # Копирование файлов COPY requirements.txt requirements.txt # Установка Python-зависимостей RUN pip install --no-cache-dir -r requirements.txt # Копирование всех файлов приложения COPY . . # Запуск приложения CMD ["python", "app.py"] ``` ### 1.3 Создание файла requirements.txt В каталоге `university_service` файл `requirements.txt`, в котором перечислите все необходимые библиотеки для приложения. В данном случае рассматриваем только университет, в факультетах анологично. ```txt flask flask_sqlalchemy psycopg2 ``` ### 1.5 Запуск Docker Compose Когда все файлы созданы, можно запустить сервисы с помощью команды: ```bash docker-compose up ``` Эта команда создаст и запустит все указанные в `docker-compose.yml` сервисы. ## Часть 2: Реализация функциональности ### 2.1 Создание сервиса для университетов В каталоге `university_service` файл `app.py`,`service.py`,`db.py`. Этb файлы будут содержать код Flask приложения для управления университетами и базы данных для него. ### 2.2 Создание сервиса для факультетов Каталог `faculty_service` и в нем файл `app.py`,`service.py`,`db.py`. Эти файлы будут содержать код для управления факультетами и базы данных для него. ### 2.3 Создание таблиц базы данных Нужно создать таблицы базы данных для университетов и факультетов. Для этого созданы файлы init.sql для университета и для факультетов. ### 2.4 Тестирование API Тестирование производится через расширение RestMan. В нем мы можем убедиться, что весь CRUD работает исправно. ## Часть 3: Ссылка на видео [Видео-отчёт Кашин Максим ПИбд-42](https://disk.yandex.ru/i/F0Dh7RnpVL1Stg)