Перед началом нужно проверить, что 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 работает исправно.