Задание 1: nginx с кастомной страницей
Из лекции — практическое задание на уроке.
Цель: написать Dockerfile, собрать образ nginx с кастомной HTML-страницей, запустить и проверить в браузере.
- Создайте директорию для проекта
my-nginxи перейдите в неё. - Создайте файл
index.htmlс содержимым на ваш выбор (заголовок, параграф). - Создайте файл
Dockerfile— базовый образnginx:alpine, копируйте index.html в/usr/share/nginx/html/, укажите EXPOSE 80. - Соберите образ командой
docker build -t my-nginx . - Запустите контейнер: пробросьте порт 8080:80, задайте имя, запустите в фоне.
- Откройте браузер по адресу
http://localhost:8080— должна появиться ваша страница.
Ожидаемый результат: в браузере видна ваша HTML-страница, отдаваемая nginx из Docker-контейнера.
Задание 2: Bash-скрипт с сохранением данных
Из лекции — практическое задание на уроке.
Цель: создать Dockerfile на основе debian:stable-slim, который запускает скрипт, скачивающий данные и сохраняющий их в volume на хосте.
- Создайте директорию
fetch-data-appи перейдите в неё. - Создайте файл
fetch_data.sh:- URL =
https://api.coindesk.com/v1/bpi/currentprice.json - Скачать данные через
curlи сохранить в/data/price.json
- URL =
- Создайте
Dockerfile:- Базовый образ:
debian:stable-slim - Установить
curl(один RUN с очисткой кеша) - Скопировать скрипт и сделать исполняемым
- Задать WORKDIR, ENV для URL и OUTPUT_FILE
- Определить VOLUME ["/data"]
- CMD — запуск скрипта
- Базовый образ:
- Создайте папку
dataна хосте. - Соберите образ:
docker build -t fetch-data-image . - Запустите:
docker run --rm -v "${PWD}/data:/data" fetch-data-image
Ожидаемый результат: файл data/price.json появился на хосте с JSON-данными о курсе Bitcoin.
Задание 3: Python + psutil в Docker
Это задание совпадает с домашним заданием из LMS — подробное решение в homework.html.
Цель: создать Dockerfile для Python-приложения, которое использует psutil для сбора информации о системе и сохраняет результат в файл на хосте через volume.
- Создайте директорию
memory-info-app. - Сохраните код приложения в
memory_info.py(читает CPU и память через psutil, записывает вdata/output.txt). - Создайте
requirements.txtс содержимымpsutil. - Создайте
Dockerfile:- Базовый образ:
python:3.12-slim - WORKDIR /app
- COPY requirements.txt и исходный код
- RUN pip install для зависимостей
- ENTRYPOINT для запуска приложения
- Базовый образ:
- Соберите образ и запустите с монтированием папки
dataв/app/data. - Проверьте содержимое
data/output.txt.
Ожидаемый результат: файл data/output.txt содержит информацию об ОС, загрузке CPU и использовании памяти.