📝 Задания урока 04
Практические задания из лекции — выполняйте самостоятельно, решения в следующем разделе.
⚡ Три задания
- Multistage vs Single-stage: собрать одно Flask-приложение двумя Dockerfile, сравнить размеры образов
- MediaWiki + MariaDB: запустить локальную Википедию через Docker Compose
- WordPress + MySQL: запустить WordPress с базой данных через Docker Compose
Задание 1: Сравнение Multistage vs Single-stage образов
Из практической работы лекции.
Цель: убедиться на практике, что multistage build уменьшает размер финального образа. Сравнить два образа одного приложения.
Шаги
-
Создайте рабочую директорию и следующие файлы:
app.py— простое Flask-приложение (возвращает JSON)requirements.txt— зависимости: Flask, WerkzeugDockerfile.multistage— двухстадийный DockerfileDockerfile.singlestage— одностадийный Dockerfile (без разделения)
- Выполните сборку с multi-stage:
docker build -t myapp:multistage -f Dockerfile.multistage . - Выполните сборку без multi-stage:
docker build -t myapp:singlestage -f Dockerfile.singlestage . - Сравните размеры образов:
docker images myapp:multistagedocker images myapp:singlestage - Запустите оба контейнера:
docker run -d --name multistage_app -p 5000:5000 myapp:multistagedocker run -d --name singlestage_app -p 5001:5001 myapp:singlestage - Откройте
http://localhost:5000иhttp://localhost:5001— оба должны работать одинаково. - Просмотрите логи:
docker logs multistage_appdocker logs singlestage_app
Ожидаемый результат: multistage-образ значительно меньше (в 2–3 раза). Поведение приложений идентично.
Задание 2: Запуск локальной Википедии (MediaWiki + MariaDB)
Из задания для закрепления лекции.
Цель: запустить MediaWiki с базой данных MariaDB через Docker Compose. После первоначальной настройки Вики должна быть доступна по адресу
http://localhost:8080.
Шаги
- Создайте директорию
mediawiki-composeи в ней файлdocker-compose.yml. -
Опишите два сервиса:
mediawiki: образmediawiki, порт8080:80,restart: alwaysdatabase: образmariadb, переменные окружения для настройки БД,restart: always
- Запустите приложение:
docker compose up -d - Перейдите по адресу
http://localhost:8080и завершите первоначальную настройку MediaWiki. - Убедитесь, что сервисы работают:
docker compose ps - Посмотрите логи:
docker compose logs mediawiki
Подсказка: используйте современный стиль — без version:, без links:, сеть организуйте через networks:.
Задание 3: Запуск WordPress + MySQL
Из задания для закрепления лекции.
Цель: запустить WordPress с базой данных MySQL. WordPress должен быть доступен по адресу
http://localhost:80 (или http://localhost:8081).
Шаги
- Создайте директорию
wordpress-composeи файлdocker-compose.yml. -
Опишите два сервиса:
db: образmysql:8.0, тома для данных, переменные окруженияwordpress: образwordpress:latest, зависимость отdb, переменные окружения для подключения к БД
- Добавьте healthcheck для MySQL и
depends_on: condition: service_healthyдля WordPress (современный подход). - Запустите:
docker compose up -d - Перейдите по адресу WordPress и завершите установку.
- Проверьте, что данные сохраняются: остановите и снова запустите стек. Данные должны сохраниться.
Подсказка: обратите внимание, что WORDPRESS_DB_HOST должен содержать имя сервиса БД и порт (например, db:3306).
Решения всех заданий — в разделе ✅ Решения.