forked from Alexey/DAS_2024_1
105 lines
5.1 KiB
Markdown
105 lines
5.1 KiB
Markdown
# Кашин Максим ПИбд-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) |