# Лабораторная работа №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)