DAS_2024_1/kashin_maxim_lab_3/readme.md
2024-10-06 00:33:30 +04:00

105 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Кашин Максим ПИбд-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)