diff --git a/antonov_dmitry_lab_2/README.md b/antonov_dmitry_lab_2/README.md new file mode 100644 index 0000000..4889a52 --- /dev/null +++ b/antonov_dmitry_lab_2/README.md @@ -0,0 +1,59 @@ +# Лабораторная работа №2 - Разработка простейшего распределённого приложения + +# Вариант 2 + +# Задачи +* Согласно вашему варианту (выбирайте любой) разработать два приложения такие, что результат первого является исходными данными для второго. +* Изучить файлы сборки образов docker и разработать их для созданных приложений. +* Собрать файл docker-compose.yml для запуска приложений. Разобраться с монтированием каталогов из хост-системы. +* Правильно закоммитить результат без лишних файлов. +* Оформить pull request по правилам и отправить его на проверку. + +# Задание для 1ого приложения +Формирует файл /var/result/data.txt из первых строк всех файлов каталога /var/data. + +# Задание для 2ого приложения +Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень +в /var/result/result.txt + +# Выбранный язык - Python + +# Запуск + +Командой в консоли проекта "docker-compose up -d" + +# Описание работы: +Развернули два flask web приложения. +К каждому мы можем обратиться по http://127.0.0.1/ +По умолчанию мы запускаем наши веб приложения и они жду когда мы к ним обратимся. +Сделал специально разделенные веб приложения, чтобы показать как в докер контейнере +мы можем к ним обратиться, выполнить команды, посмотреть на файлы в контейнере. + +

+

Докерфайл
+ +

+

+

Приложение
+ +

+

+

Docker compose
+ +

+

+

Запуск
+ +

+

+

Приложение 1
+ +

+

+

Приложение 2
+ +

+ +# Ссылка на видео +https://disk.yandex.ru/i/Ea6GsazjhF2_qA + diff --git a/antonov_dmitry_lab_2/app1/Dockerfile b/antonov_dmitry_lab_2/app1/Dockerfile new file mode 100644 index 0000000..23d93e4 --- /dev/null +++ b/antonov_dmitry_lab_2/app1/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.9 + +WORKDIR /app + +COPY requirements.txt . + +RUN pip install -r requirements.txt + +COPY . . + +COPY var/data /var/data + +COPY var/result /var/result + +CMD ["python", "app.py"] diff --git a/antonov_dmitry_lab_2/app1/app.py b/antonov_dmitry_lab_2/app1/app.py new file mode 100644 index 0000000..a4d470e --- /dev/null +++ b/antonov_dmitry_lab_2/app1/app.py @@ -0,0 +1,27 @@ +from flask import Flask +import os + +app = Flask(__name__) + + +@app.route('/') +def generate_data(): + # из первых строк всех файлов каталога /var/data + data_dir = '/var/data' + # формирует файл /var/result/data.txt + result_file = '/var/result/data.txt' + + lines = [] + + for filename in os.listdir(data_dir): + with open(os.path.join(data_dir, filename), 'r') as file: + lines.append(file.readline()) + + with open(result_file, 'w') as result: + result.write('\n'.join(lines)) + + return 'Файл успешно сформирован!\n' + str(lines) + + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000) diff --git a/antonov_dmitry_lab_2/app1/requirements.txt b/antonov_dmitry_lab_2/app1/requirements.txt new file mode 100644 index 0000000..08430b4 --- /dev/null +++ b/antonov_dmitry_lab_2/app1/requirements.txt @@ -0,0 +1,2 @@ +Flask==2.2.2 +Werkzeug==2.3.7 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app1/var/data/file1.txt b/antonov_dmitry_lab_2/app1/var/data/file1.txt new file mode 100644 index 0000000..7a754f4 --- /dev/null +++ b/antonov_dmitry_lab_2/app1/var/data/file1.txt @@ -0,0 +1,2 @@ +1 +2 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app1/var/data/file2.txt b/antonov_dmitry_lab_2/app1/var/data/file2.txt new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/antonov_dmitry_lab_2/app1/var/data/file2.txt @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app1/var/result/data.txt b/antonov_dmitry_lab_2/app1/var/result/data.txt new file mode 100644 index 0000000..c95d84f --- /dev/null +++ b/antonov_dmitry_lab_2/app1/var/result/data.txt @@ -0,0 +1,5 @@ +1 + +1 + +4 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app2/Dockerfile b/antonov_dmitry_lab_2/app2/Dockerfile new file mode 100644 index 0000000..23d93e4 --- /dev/null +++ b/antonov_dmitry_lab_2/app2/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.9 + +WORKDIR /app + +COPY requirements.txt . + +RUN pip install -r requirements.txt + +COPY . . + +COPY var/data /var/data + +COPY var/result /var/result + +CMD ["python", "app.py"] diff --git a/antonov_dmitry_lab_2/app2/app.py b/antonov_dmitry_lab_2/app2/app.py new file mode 100644 index 0000000..f9464d1 --- /dev/null +++ b/antonov_dmitry_lab_2/app2/app.py @@ -0,0 +1,28 @@ +from flask import Flask + +app = Flask(__name__) + + +@app.route('/') +def process_data(): + # ищет наименьшее число из файла /var/data/data.txt + data_file = '/var/data/data.txt' + # и сохраняет его третью степень в /var/result/result.txt + result_file = '/var/result/result.txt' + + with open(data_file, 'r') as file: + numbers = [int(line.strip()) for line in file] + + smallest_number = min(numbers) + # выводит наименьшее число + print(smallest_number) + result = smallest_number ** 3 + + with open(result_file, 'w') as file: + file.write(str(result)) + + return 'Результат успешно сохранен!\n' + + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000) diff --git a/antonov_dmitry_lab_2/app2/requirements.txt b/antonov_dmitry_lab_2/app2/requirements.txt new file mode 100644 index 0000000..08430b4 --- /dev/null +++ b/antonov_dmitry_lab_2/app2/requirements.txt @@ -0,0 +1,2 @@ +Flask==2.2.2 +Werkzeug==2.3.7 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app2/var/data/data.txt b/antonov_dmitry_lab_2/app2/var/data/data.txt new file mode 100644 index 0000000..b46f59e --- /dev/null +++ b/antonov_dmitry_lab_2/app2/var/data/data.txt @@ -0,0 +1,2 @@ +1 +4 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/app2/var/result/result.txt b/antonov_dmitry_lab_2/app2/var/result/result.txt new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/antonov_dmitry_lab_2/app2/var/result/result.txt @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/antonov_dmitry_lab_2/docker-compose.yml b/antonov_dmitry_lab_2/docker-compose.yml new file mode 100644 index 0000000..5195965 --- /dev/null +++ b/antonov_dmitry_lab_2/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3' + +services: + app1: + build: ./app1 + + app2: + build: ./app2 diff --git a/antonov_dmitry_lab_2/screens/img.png b/antonov_dmitry_lab_2/screens/img.png new file mode 100644 index 0000000..31c5d4e Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img.png differ diff --git a/antonov_dmitry_lab_2/screens/img_1.png b/antonov_dmitry_lab_2/screens/img_1.png new file mode 100644 index 0000000..2eb75ac Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img_1.png differ diff --git a/antonov_dmitry_lab_2/screens/img_2.png b/antonov_dmitry_lab_2/screens/img_2.png new file mode 100644 index 0000000..34c6327 Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img_2.png differ diff --git a/antonov_dmitry_lab_2/screens/img_3.png b/antonov_dmitry_lab_2/screens/img_3.png new file mode 100644 index 0000000..1eb891f Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img_3.png differ diff --git a/antonov_dmitry_lab_2/screens/img_4.png b/antonov_dmitry_lab_2/screens/img_4.png new file mode 100644 index 0000000..a550e43 Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img_4.png differ diff --git a/antonov_dmitry_lab_2/screens/img_5.png b/antonov_dmitry_lab_2/screens/img_5.png new file mode 100644 index 0000000..af2503e Binary files /dev/null and b/antonov_dmitry_lab_2/screens/img_5.png differ