77 lines
4.5 KiB
Markdown
77 lines
4.5 KiB
Markdown
# Лабораторная работа №2
|
||
|
||
## Описание проекта
|
||
|
||
Проект разворачивает 3 программы в отдельных контейнерах с использованием Docker Compose:
|
||
1. **author_service** - сервис, с CRUD операциями для авторов;
|
||
2. **publication_service** - сервис, с CRUD операциями для публикаций;
|
||
3. **nginx** - веб-сервер и прокси-сервер, является маршрутизатором.
|
||
|
||
Между первыми двумя сервисами имеется связь один(`Автор`) ко многим(`Публикация`).
|
||
|
||
## Струкутура проекта
|
||
|
||
### Проект состоит из:
|
||
|
||
- 2 папки(author_service, publication_service)
|
||
- Каждая папка содержит в себе файл с расширением `.py` с кодом программы;
|
||
- Кадлая папка сожержит в себе файл `Dockerfile` с инструкцией по созданию Docker образа.
|
||
|
||
- Файл `.gitignore` для исключения временных файлов директории `venv/`;
|
||
|
||
- Файл `docker-compose.yml` с конфигурацией Docker Compose;
|
||
|
||
- Файл `nginx.conf` конфигурации для веб-сервера NGINX с параметрами работы сервера;
|
||
|
||
- Файл `requirements.txt` с перечислением всех необходимых библиотек для запуска.
|
||
|
||
Комментарии в файлах.
|
||
|
||
## Запуск
|
||
|
||
1. Скачать и установить Docker и Docker Compose;
|
||
2. Перейти в директорию с файлом docker-compose.yml;
|
||
3. Открыть консоль и запустить сервисы командой
|
||
```bash
|
||
docker-compose up --build -d
|
||
```
|
||
4. Дождаться запуска всех сервисов
|
||
```bash
|
||
[+] Running 3/3
|
||
✔ Container lazarev_andrey_lab_2-generate-files-1 Started 0.5s
|
||
✔ Container lazarev_andrey_lab_2-first-1 Started 1.3s
|
||
✔ Container lazarev_andrey_lab_2-second-1 Started 2.0s
|
||
```
|
||
5. Остановка всех сервисов
|
||
Для завершения работы с сервисами необходимо выполнить команду:
|
||
```bash
|
||
docker-compose down
|
||
```
|
||
Дождаться завершения работы:
|
||
```bash
|
||
[+] Running 4/4
|
||
✔ Container lazarev_andrey_lab_2-second-1 Removed 0.0s
|
||
✔ Container lazarev_andrey_lab_2-first-1 Removed 0.0s
|
||
✔ Container lazarev_andrey_lab_2-generate-files-1 Removed 0.0s
|
||
✔ Network lazarev_andrey_lab_2_default Removed 0.4s
|
||
```
|
||
|
||
## Cписок команд
|
||
- Author_service
|
||
- `http://localhost:8000/author_service/author` - список авторов
|
||
- `http://localhost:8000/author_service/author/{id автора}` - конкретный автор
|
||
- `http://localhost:8000/author_service/author/full/{id автора}` - автор и полный список его публикаций
|
||
- `http://localhost:8000/author_service/author?name={имя}&second_name={фамилия}&age={возраст}` - добавление нового автора
|
||
- `http://localhost:8000/author_service/author/{id автора}?name={новое имя}` - изменение имени автора
|
||
|
||
- Publication_service
|
||
- `http://localhost:8000/publication_service/publication` - список публикаций
|
||
- `http://localhost:8000/publication_service/publication/{id публикации}` - конкретная публикация
|
||
- `http://localhost:8000/publication_service/publication/full/{id публикации}` - публикация и полная информация об авторе
|
||
- `http://localhost:8000/publication_service/publication?name={название}&public_year={год выпуска}&author_id={id автора}` - добавление новой публикации
|
||
- `http://localhost:8000/publication_service/publication/{id публикации}?name={новое название}` - изменение названия публикации
|
||
## Видеодемонстрация работоспособности
|
||
|
||
[Демонстрация работы сервисов](https://files.ulstu.ru/s/5D2i6gbLn6r2jsA)
|
||
|