From 115085bb887e01085aef47679df4cbe68a4bf615 Mon Sep 17 00:00:00 2001 From: maxnes3 Date: Tue, 29 Oct 2024 02:32:40 +0400 Subject: [PATCH 1/3] code is complete --- bondarenko_max_lab_2/.gitignore | 4 +++ bondarenko_max_lab_2/app-1/Dockerfile | 14 +++++++++++ bondarenko_max_lab_2/app-1/index.js | 33 +++++++++++++++++++++++++ bondarenko_max_lab_2/app-2/Dockerfile | 14 +++++++++++ bondarenko_max_lab_2/app-2/index.js | 30 ++++++++++++++++++++++ bondarenko_max_lab_2/docker-compose.yml | 18 ++++++++++++++ 6 files changed, 113 insertions(+) create mode 100644 bondarenko_max_lab_2/.gitignore create mode 100644 bondarenko_max_lab_2/app-1/Dockerfile create mode 100644 bondarenko_max_lab_2/app-1/index.js create mode 100644 bondarenko_max_lab_2/app-2/Dockerfile create mode 100644 bondarenko_max_lab_2/app-2/index.js create mode 100644 bondarenko_max_lab_2/docker-compose.yml diff --git a/bondarenko_max_lab_2/.gitignore b/bondarenko_max_lab_2/.gitignore new file mode 100644 index 0000000..d1b011e --- /dev/null +++ b/bondarenko_max_lab_2/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +data/ +result/ +*.log diff --git a/bondarenko_max_lab_2/app-1/Dockerfile b/bondarenko_max_lab_2/app-1/Dockerfile new file mode 100644 index 0000000..be4d002 --- /dev/null +++ b/bondarenko_max_lab_2/app-1/Dockerfile @@ -0,0 +1,14 @@ +# Образ с Node.js версии 18 +FROM node:18 + +# Создание директории +WORKDIR /app + +# Добавление кода в контейнер из index.js +COPY index.js . + +# Установка рабочей папки для вводных данных и результата +RUN mkdir -p /var/data /var/result + +# Запуск index.js с помощью среды выполнения Node.js +CMD ["node", "index.js"] diff --git a/bondarenko_max_lab_2/app-1/index.js b/bondarenko_max_lab_2/app-1/index.js new file mode 100644 index 0000000..dafc41c --- /dev/null +++ b/bondarenko_max_lab_2/app-1/index.js @@ -0,0 +1,33 @@ +// Первая программа лабораторной работы. +// Вариант - 2: Формирует файл /var/result/data.txt из первых строк всех файлов каталога /var/data. +// Для реализации программы я буду использовать JavaScript с Node.js + +// Импорт модулей +const fs = require('fs'); +const path = require('path'); + +// Добавляем пути к папкам +const dataDir = '/var/data'; +const resultFile = '/var/result/data.txt'; + +// Функция для извлечения первых строк всех файлов в data и записи резултата в result +const gatherFirstLines = () => { + // Обёртываю в try/catch + try { + const files = fs.readdirSync(dataDir); // Считывание название файлов из data + // Проходимся по файлам + // Добовляем первые строчки + const firstLines = files.map((file) => { + const filePath = path.join(dataDir, file); + const content = fs.readFileSync(filePath, 'utf-8'); + return content.split('\n')[0]; + }); + + fs.writeFileSync(resultFile, firstLines.join('\n')); // Записываем первые строки в `data.txt` + console.log('First lines have been successfully written to', resultFile); // Логирую в терминал результат + } catch (error) { + console.error('Error processing files:', error); // Перехватываю ошибку + } +}; + +gatherFirstLines(); // Вызываю функцию diff --git a/bondarenko_max_lab_2/app-2/Dockerfile b/bondarenko_max_lab_2/app-2/Dockerfile new file mode 100644 index 0000000..be4d002 --- /dev/null +++ b/bondarenko_max_lab_2/app-2/Dockerfile @@ -0,0 +1,14 @@ +# Образ с Node.js версии 18 +FROM node:18 + +# Создание директории +WORKDIR /app + +# Добавление кода в контейнер из index.js +COPY index.js . + +# Установка рабочей папки для вводных данных и результата +RUN mkdir -p /var/data /var/result + +# Запуск index.js с помощью среды выполнения Node.js +CMD ["node", "index.js"] diff --git a/bondarenko_max_lab_2/app-2/index.js b/bondarenko_max_lab_2/app-2/index.js new file mode 100644 index 0000000..a34f0ed --- /dev/null +++ b/bondarenko_max_lab_2/app-2/index.js @@ -0,0 +1,30 @@ +// Вторая программа лабораторной работы. Вариант - 2. +// Вариант - 2: Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt. +// Для реализации программы я буду использовать JavaScript с Node.js + +// Импорт модулей +const fs = require('fs'); +const path = require('path'); + +// Добавляем пути к папкам +const dataFile = '/var/result/data.txt'; +const resultFile = '/var/result/result.txt'; + +// Функция для запаси наименьшего числа в кубе из data в result +const calculateMinCubed = () => { + // Обёртываю в try/catch + try { + const content = fs.readFileSync(dataFile, 'utf-8'); // Открытие файла с кодировкой UTF-8 + const numbers = content.split('\n').map(Number).filter(Boolean); // Преобразую в числа + + const minNumber = Math.min(...numbers); // Ищу минимальное число + const result = Math.pow(minNumber, 3); // Возвожу в 3-тью степень + + fs.writeFileSync(resultFile, result.toString()); // Записываю результат в файл + console.log(`Cubed minimum number (${minNumber}^3) saved to`, resultFile); // Логирую в терминал результат + } catch (error) { + console.error('Error processing file:', error); // Перехватываю ошибку + } +}; + +calculateMinCubed(); // Вызываю функцию diff --git a/bondarenko_max_lab_2/docker-compose.yml b/bondarenko_max_lab_2/docker-compose.yml new file mode 100644 index 0000000..384d101 --- /dev/null +++ b/bondarenko_max_lab_2/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + app1: + build: + context: ./app-1 + volumes: + - ./data:/var/data # Монтируем локальную папку data в /var/data + - ./result:/var/result # Монтируем локальную папку result в /var/result + container_name: app1 + + app2: + build: + context: ./app-2 + depends_on: + - app1 + volumes: + - ./result:/var/result # Монтируем ту же папку result + container_name: app2 From 07a49d9b7b2bdea4080b40e28dc3258b4eece5d3 Mon Sep 17 00:00:00 2001 From: maxnes3 Date: Sun, 24 Nov 2024 18:40:08 +0400 Subject: [PATCH 2/3] bondarenko_max_lab_2 is done --- bondarenko_max_lab_2/.gitignore | 2 +- bondarenko_max_lab_2/README.md | 55 +++++++++++++++++++++++++++++ bondarenko_max_lab_2/app-2/index.js | 2 +- 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 bondarenko_max_lab_2/README.md diff --git a/bondarenko_max_lab_2/.gitignore b/bondarenko_max_lab_2/.gitignore index d1b011e..babf42d 100644 --- a/bondarenko_max_lab_2/.gitignore +++ b/bondarenko_max_lab_2/.gitignore @@ -1,4 +1,4 @@ node_modules/ data/ result/ -*.log +*.log \ No newline at end of file diff --git a/bondarenko_max_lab_2/README.md b/bondarenko_max_lab_2/README.md new file mode 100644 index 0000000..a93eb27 --- /dev/null +++ b/bondarenko_max_lab_2/README.md @@ -0,0 +1,55 @@ +# Лабораторная работа 2 - Разработка простейшего распределённого приложения +### ПИбд-42 || Бондаренко Максим + +# Описание работы + +> Задача: +В данной лабораторной работе изучить способы создания и развертывания простого распределённого приложения. + +### Первая программа лабораторной работы. +``` +Вариант - 2: Формирует файл /var/result/data.txt из первых строк всех файлов каталога /var/data. +Для реализации программы я буду использовать JavaScript с Node.js +``` + +### Вторая программа лабораторной работы. +``` +Вариант - 2: Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt. +Для реализации программы я буду использовать JavaScript с Node.js +``` + +> Инструкция по запуску +1. Запуск Docker - Desktop +2. Открыть консоль в папке с docker-compose.yml +3. Ввести команду: +``` +docker-compose up --build +``` + +> Docker-compose.yml +``` +version: '3' +services: + app1: + build: + context: ./app-1 + volumes: + - ./data:/var/data # Монтируем локальную папку data в /var/data + - ./result:/var/result # Монтируем локальную папку result в /var/result + container_name: app1 + + app2: + build: + context: ./app-2 + depends_on: + - app1 + volumes: + - ./result:/var/result # Монтируем ту же папку result + container_name: app2 +``` +#### В результате в папке result создаётся два текстовых документа: +1. data - результат работы первого проекта +2. result - результат работы второго проекта + +> Видео демонстрация работы +https://cloud.mail.ru/public/FyyE/LTkRXBQXN \ No newline at end of file diff --git a/bondarenko_max_lab_2/app-2/index.js b/bondarenko_max_lab_2/app-2/index.js index a34f0ed..322d876 100644 --- a/bondarenko_max_lab_2/app-2/index.js +++ b/bondarenko_max_lab_2/app-2/index.js @@ -1,4 +1,4 @@ -// Вторая программа лабораторной работы. Вариант - 2. +// Вторая программа лабораторной работы. // Вариант - 2: Ищет наименьшее число из файла /var/data/data.txt и сохраняет его третью степень в /var/result/result.txt. // Для реализации программы я буду использовать JavaScript с Node.js From 9d7821b12b836e3b0f4da6fd7242fc7ffe9b65ee Mon Sep 17 00:00:00 2001 From: maxnes3 Date: Sun, 24 Nov 2024 18:41:58 +0400 Subject: [PATCH 3/3] gitignore is edited --- bondarenko_max_lab_2/.gitignore | 2 -- bondarenko_max_lab_2/data/file1.txt | 10 ++++++++++ bondarenko_max_lab_2/data/file2.txt | 10 ++++++++++ bondarenko_max_lab_2/data/file3.txt | 10 ++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 bondarenko_max_lab_2/data/file1.txt create mode 100644 bondarenko_max_lab_2/data/file2.txt create mode 100644 bondarenko_max_lab_2/data/file3.txt diff --git a/bondarenko_max_lab_2/.gitignore b/bondarenko_max_lab_2/.gitignore index babf42d..5a451dc 100644 --- a/bondarenko_max_lab_2/.gitignore +++ b/bondarenko_max_lab_2/.gitignore @@ -1,4 +1,2 @@ node_modules/ -data/ -result/ *.log \ No newline at end of file diff --git a/bondarenko_max_lab_2/data/file1.txt b/bondarenko_max_lab_2/data/file1.txt new file mode 100644 index 0000000..aa6397b --- /dev/null +++ b/bondarenko_max_lab_2/data/file1.txt @@ -0,0 +1,10 @@ +25 +91 +77 +63 +45 +25 +21 +89 +6 +18 \ No newline at end of file diff --git a/bondarenko_max_lab_2/data/file2.txt b/bondarenko_max_lab_2/data/file2.txt new file mode 100644 index 0000000..03b13de --- /dev/null +++ b/bondarenko_max_lab_2/data/file2.txt @@ -0,0 +1,10 @@ +98 +62 +45 +77 +65 +45 +61 +62 +10 +76 \ No newline at end of file diff --git a/bondarenko_max_lab_2/data/file3.txt b/bondarenko_max_lab_2/data/file3.txt new file mode 100644 index 0000000..76c935a --- /dev/null +++ b/bondarenko_max_lab_2/data/file3.txt @@ -0,0 +1,10 @@ +37 +54 +100 +34 +1 +77 +55 +10 +30 +28 \ No newline at end of file