📝 Задания: Dockerfile в практике

⚡ Три задания урока

  • Задание 1: nginx со своей HTML-страницей — Dockerfile, docker build, docker run, проверить в браузере
  • Задание 2: Bash-скрипт с volume — Dockerfile на debian:stable-slim, скачать данные из API, сохранить в /data
  • Задание 3: Python + psutil — Dockerfile, COPY, RUN pip, ENTRYPOINT, volume для output.txt (это и есть ДЗ)

Задание 1: nginx с кастомной страницей

Из лекции — практическое задание на уроке.

Цель: написать Dockerfile, собрать образ nginx с кастомной HTML-страницей, запустить и проверить в браузере.
  1. Создайте директорию для проекта my-nginx и перейдите в неё.
  2. Создайте файл index.html с содержимым на ваш выбор (заголовок, параграф).
  3. Создайте файл Dockerfile — базовый образ nginx:alpine, копируйте index.html в /usr/share/nginx/html/, укажите EXPOSE 80.
  4. Соберите образ командой docker build -t my-nginx .
  5. Запустите контейнер: пробросьте порт 8080:80, задайте имя, запустите в фоне.
  6. Откройте браузер по адресу http://localhost:8080 — должна появиться ваша страница.

Ожидаемый результат: в браузере видна ваша HTML-страница, отдаваемая nginx из Docker-контейнера.


Задание 2: Bash-скрипт с сохранением данных

Из лекции — практическое задание на уроке.

Цель: создать Dockerfile на основе debian:stable-slim, который запускает скрипт, скачивающий данные и сохраняющий их в volume на хосте.
  1. Создайте директорию fetch-data-app и перейдите в неё.
  2. Создайте файл fetch_data.sh:
    • URL = https://api.coindesk.com/v1/bpi/currentprice.json
    • Скачать данные через curl и сохранить в /data/price.json
  3. Создайте Dockerfile:
    • Базовый образ: debian:stable-slim
    • Установить curl (один RUN с очисткой кеша)
    • Скопировать скрипт и сделать исполняемым
    • Задать WORKDIR, ENV для URL и OUTPUT_FILE
    • Определить VOLUME ["/data"]
    • CMD — запуск скрипта
  4. Создайте папку data на хосте.
  5. Соберите образ: docker build -t fetch-data-image .
  6. Запустите: 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.
  1. Создайте директорию memory-info-app.
  2. Сохраните код приложения в memory_info.py (читает CPU и память через psutil, записывает в data/output.txt).
  3. Создайте requirements.txt с содержимым psutil.
  4. Создайте Dockerfile:
    • Базовый образ: python:3.12-slim
    • WORKDIR /app
    • COPY requirements.txt и исходный код
    • RUN pip install для зависимостей
    • ENTRYPOINT для запуска приложения
  5. Соберите образ и запустите с монтированием папки data в /app/data.
  6. Проверьте содержимое data/output.txt.

Ожидаемый результат: файл data/output.txt содержит информацию об ОС, загрузке CPU и использовании памяти.

→ Посмотреть решения  ·  ← К оглавлению урока