From 761cc83ebd7a3ede0af8b7ff512d2b25ddc3661c Mon Sep 17 00:00:00 2001 From: maksim Date: Sun, 6 Oct 2024 00:33:30 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D0=B1=D0=B5=D0=B4=D0=B0...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kashin_maxim_lab_3/readme.md | 104 ++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/kashin_maxim_lab_3/readme.md b/kashin_maxim_lab_3/readme.md index 0a1c85d..0dab095 100644 --- a/kashin_maxim_lab_3/readme.md +++ b/kashin_maxim_lab_3/readme.md @@ -1,3 +1,105 @@ # Кашин Максим ПИбд-42 -# Тематика: Учебная групп и студенты \ No newline at end of file +# Проект "Университеты и Факультеты" + +## Часть 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) \ No newline at end of file