DAS_2024_1/davydov_yuriy_lab_2/README.md

86 lines
3.2 KiB
Markdown
Raw Normal View History

2024-12-20 12:50:51 +04:00
# Лабораторная работа №2 - Разработка простейшего распределенного приложения
## ПИбд-42 || Давыдов Юрий
## Описание
В рамках данной лабораторной работы были созданы два контейнера с простыми программами на Python, которые выполняют следующие условия: результат работы первой программы служит исходными данными для второй программы.
Цель лабораторной работы
Изучение процесса создания простого распределённого приложения.
1. Варианты
Для обеих программ был выбран вариант 1.
Описание первой программы: 1. Программа находит в каталоге /var/data файл с наибольшим количеством строк и перемещает его в /var/result/data.txt.
Описание второй программы: 1. Программа находит наибольшее число в файле /var/data/data.txt и записывает его квадрат в /var/result/result.txt.
2. Dockerfile
Оба Dockerfile имеют схожую структуру:
Dockerfile
Копировать код
# Используем базовый образ python
FROM python:3.12
# Устанавливаем рабочую директорию
WORKDIR /app
# Копируем код в рабочую директорию
COPY main.py .
# Указываем /var/data как монтируемую директорию
VOLUME ["/var/data"]
# Указываем /var/result как монтируемую директорию
VOLUME ["/var/result"]
# Задаем команду для запуска программы
CMD ["python", "main.py"] 3. Docker-compose
docker-compose.yml:
yaml
Копировать код
services:
# Первая программа
first: # Директория для сборки первой программы
build: ./WorkFirst/ # Монтируем 2 каталога из хост-системы
volumes: - ./data:/var/data - ./result_first:/var/result
# Вторая программа
second: # Директория для сборки второй программы
build: ./WorkSecond/ # Задаем зависимость запуска через depends_on
depends_on: - first # Монтируем 2 каталога из хост-системы
volumes: - ./result_first:/var/data - ./result_second:/var/result 4. Инструкция для работы
Клонировать репозиторий:
bash
Копировать код
git clone <ссылка-на-репозиторий>
cd <папка репозитория>
cd <папка лабораторной работы>
```
2. Запуск контейнеров:
```
docker compose up --build
```
3. Результаты:
Итог работы первой программы будет в папке `result_first`, а второй - в `result_second`.
```