diff --git a/sergeev_evgenii_lab_2/README.md b/sergeev_evgenii_lab_2/README.md index e69de29..0a5d9cc 100644 --- a/sergeev_evgenii_lab_2/README.md +++ b/sergeev_evgenii_lab_2/README.md @@ -0,0 +1,38 @@ +## Задание +Развернуть два взаимосвязанных сервиса по варианту: + +Вариант № 4 для первой программы: +* Сервис формирует файл /var/result/data.txt так, что каждая строка файла - количество символов в именах файлов из каталога /var/data. +Вариант № 2 для второй программы: +* Сервис ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt. +## Выполнение +Были написаны два сервиса на языке python с использованием технологии flask. +Они выводят на страницу кнопки, при нажатии на которые происходит соответствующие действия по заданию + +Для сервисов прописаны файлы Dockerfile, описывающие создание контейнеров: +* Для обоих контейнеров выбирается Python 9. +* Оба контейнера проявляют порты, на которых работает приложение: 8081 для первого и 8082 для второго. +* В контейнерах создаются папки /work для файлов скриптов, папки /var/result для обоих сервисов и /var/data для первого скрипта. +* В оба контейнера устанавливается пакет Flask. +* Выбирается рабочая директория /work и туда копируются файлы скриптов. +* Командой запускаются сами скрипты. + +Общий yaml-файл развёртки был настроен следующим образом: +* блок services, где перечислены разворачиваемые сервисы. +* для каждого сервиса прописан build, где объявляется его папка и докерфайл создания. +* для каждого сервиса прописано отображение портов на такие же хоста. +* для каждого сервиса прописано монтирование нужных папок хостовой системы как соответствующих папок внутри контейнеров. + +## Результат +Пример выполнения: + +Исходные данные: три файла в папке /var/data, средний файл имеет наибольшее количество строк и наибольшее число 40. + +Ход работы: нажатие кнопок на странице первого сервиса, потом - второго. +Запросы: +![Запросы](screens/requests.png) +Выходные данные: средний файл, перенесённый в /var/result/data.txt, файл result.txt там же с результатом вычислений - числом 1600. Результат выведен на страницу второго сервиса: +![Результат](screens/res.png) + +## Ссылка на видео +https://drive.google.com/file/d/1ZI1FeQ8BqPR-e_dKnUlNW7V5A39ZlTYu/view?usp=drive_link \ No newline at end of file diff --git a/sergeev_evgenii_lab_2/docker-compose.yml b/sergeev_evgenii_lab_2/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/sergeev_evgenii_lab_2/service1/Dockerfile b/sergeev_evgenii_lab_2/service1/Dockerfile new file mode 100644 index 0000000..c33b0f9 --- /dev/null +++ b/sergeev_evgenii_lab_2/service1/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:latest +LABEL authors="User" + +ENTRYPOINT ["top", "-b"] \ No newline at end of file diff --git a/sergeev_evgenii_lab_2/service1/index.html b/sergeev_evgenii_lab_2/service1/index.html new file mode 100644 index 0000000..c0b0956 --- /dev/null +++ b/sergeev_evgenii_lab_2/service1/index.html @@ -0,0 +1,12 @@ + + + + + Сервис № 1 + + +
+ +
+ + diff --git a/sergeev_evgenii_lab_2/service1/service1.py b/sergeev_evgenii_lab_2/service1/service1.py new file mode 100644 index 0000000..20b0002 --- /dev/null +++ b/sergeev_evgenii_lab_2/service1/service1.py @@ -0,0 +1,36 @@ +from flask import Flask, redirect, render_template +import os + +app = Flask(__name__) + + +@app.route('/') +def home(): + return render_template("index.html") + + +@app.route('/ex') +def do(): + data_dir = '/var/data' + path_result_file = '/var/result/data.txt' + + try: + # Получаем список файлов в указанном каталоге + files = os.listdir(data_dir) + + # Формируем путь к каждому файлу и считаем количество символов в именах + characters_count_list = [len(file) for file in files] + + # Пишем результат в файл data.txt + with open(path_result_file, 'w') as result_file: + for count in characters_count_list: + result_file.write(f'{count}\n') + + print(f'Файл успешно создан.') + except Exception as e: + print(f'Произошла ошибка: {e}') + + return redirect("/") + + +app.run(host='0.0.0.0', port=8081) diff --git a/sergeev_evgenii_lab_2/service2/Dockerfile b/sergeev_evgenii_lab_2/service2/Dockerfile new file mode 100644 index 0000000..c33b0f9 --- /dev/null +++ b/sergeev_evgenii_lab_2/service2/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:latest +LABEL authors="User" + +ENTRYPOINT ["top", "-b"] \ No newline at end of file diff --git a/sergeev_evgenii_lab_2/service2/index.html b/sergeev_evgenii_lab_2/service2/index.html new file mode 100644 index 0000000..8532127 --- /dev/null +++ b/sergeev_evgenii_lab_2/service2/index.html @@ -0,0 +1,12 @@ + + + + + Сервис № 2 + + +
+ +
+ + diff --git a/sergeev_evgenii_lab_2/service2/result.html b/sergeev_evgenii_lab_2/service2/result.html new file mode 100644 index 0000000..836015b --- /dev/null +++ b/sergeev_evgenii_lab_2/service2/result.html @@ -0,0 +1,10 @@ + + + + + Результат работы + + +

Результат: {{num}}

+ + diff --git a/sergeev_evgenii_lab_2/service2/service2.py b/sergeev_evgenii_lab_2/service2/service2.py new file mode 100644 index 0000000..e69de29