Docker Compose: запускаем первое приложение

Бесплатный практический курс по Docker Compose для Python-разработчиков и QA-инженеров. Вместе с курсом вы соберёте FastAPI-сервис с PostgreSQL, настроите Dockerfile, сеть, тома и проверки готовности. Затем самостоятельно создадите HTTP-счётчик с Redis, настроите сохранение данных и разберёте сбой подключения.…
Начальный уровень
4–5 часов в неделю

Чему вы научитесь

  • Создавать небольшие HTTP-приложения на FastAPI и проверять их ответы до и после контейнеризации
  • Различать Docker-образ и контейнер, управлять запуском, остановкой и удалением контейнеров
  • Писать Dockerfile для Python-приложения, собирать образ и запускать сервис из собственного образа
  • Различать внутренние порты контейнера и порты, опубликованные на компьютере
  • Описывать несколько связанных сервисов в Docker Compose и запускать их одной командой
  • Настраивать переменные окружения и подключать FastAPI к PostgreSQL и Redis
  • Использовать имена сервисов и сеть Compose для взаимодействия контейнеров, не обращаясь к localhost другого контейнера
  • Проверять готовность зависимых сервисов и отличать запущенный контейнер от приложения, принимающего запросы
  • Подключать именованные тома и проверять сохранность данных после штатного удаления и повторного создания контейнеров
  • Выполнять резервное копирование и восстановление учебной базы PostgreSQL с проверкой сохранённых записей
  • Настраивать сохранение данных Redis с помощью AOF и проверять значение счётчика после повторного запуска проекта
  • Использовать docker compose config, ps и logs для проверки конфигурации, состояния сервисов и поиска ошибок
  • Диагностировать нарушения соединения между FastAPI и хранилищем по HTTP-ответам, настройкам и журналам контейнеров
  • Восстанавливать работу Compose-проекта после ошибки конфигурации и подтверждать исправление без потери сохранённых данных

О курсе

Docker Compose: От отдельных сервисов — к работающему локальному приложению

🧭 Отправная точка

Сервис заметок на FastAPI работает на компьютере разработчика и сохраняет данные в PostgreSQL. После переноса API в контейнер подключение к базе перестаёт работать. Причина может быть в адресе: localhost внутри контейнера указывает на сам контейнер, а PostgreSQL запущен отдельно.

При совместном запуске сервисов возникают и другие вопросы. База может быть запущена, но ещё не готова принимать соединения. После удаления контейнера могут исчезнуть записи, если не настроено постоянное хранение. Docker Compose помогает управлять этими сервисами, а для диагностики нужно понимать, как устроены сеть, порты, проверки готовности и тома.

На курсе вы создадите два небольших приложения. Сервис заметок на FastAPI с PostgreSQL соберёте поэтапно вместе с учебными материалами. Затем самостоятельно разработаете HTTP-счётчик на FastAPI с Redis и примените те же принципы к другому хранилищу.

🎯 Цель курса — научиться собирать и запускать Python-приложения с зависимостями через Docker Compose, сохранять данные при пересоздании контейнеров и находить причины типичных ошибок подключения.

⚙️ Что вы будете делать

  • 📦 Собирать и запускать контейнеры. Создадите Dockerfile для FastAPI, соберёте образ и запустите HTTP-сервис. Разберётесь, чем образ отличается от контейнера, как работает процесс внутри него и зачем различать внутренний и опубликованный порты.

  • 🔗 Настраивать взаимодействие сервисов. Опишете запуск FastAPI и PostgreSQL в Docker Compose, настроите переменные окружения, имена сервисов и сеть. Проверите доступ к базе по имени сервиса и научитесь отличать запуск контейнера от готовности приложения принимать запросы.

  • 💾 Сохранять данные. Подключите именованный том к PostgreSQL и проверите, что заметки остаются после штатного удаления и повторного создания контейнеров. Для самостоятельного счётчика настроите Redis, журнал AOF и том, затем сравните значения до и после повторного запуска проекта.

  • 🔎 Находить и исправлять ошибки. Научитесь использовать docker compose config, ps и logs, проверять сетевые настройки, состояние хранилища и HTTP-ответы. В итоговой практике восстановите подключение FastAPI к Redis после контролируемой ошибки в конфигурации.

🔥 Чем отличается курс

Программа построена вокруг двух приложений с понятным поведением. Сначала вы запустите сервис заметок без контейнеров, затем добавите Dockerfile, PostgreSQL и Compose. Во втором проекте самостоятельно создадите счётчик, перенесёте хранение значения из памяти приложения в Redis и настроите совместный запуск.

Каждый этап можно проверить обычным HTTP-запросом. Например, запущенный контейнер ещё не подтверждает, что API может подключиться к базе. Вы сравните состояние сервисов, результаты проверок готовности и ответы приложения, чтобы определить, где возникла проблема.

Сохранность данных тоже проверяется на практике. Для PostgreSQL вы сравните заметки до и после пересоздания контейнеров. Для Redis настроите запись изменений в AOF и убедитесь, что счётчик сохранил значение при штатном docker compose down и последующем up с тем же именованным томом. Удаление тома и внезапная потеря питания в этот опыт не входят.

Для самостоятельной диагностики вы будете сопоставлять конфигурацию Compose с состоянием контейнеров и журналами. После исправления повторите исходный HTTP-запрос и проверите, что данные остались прежними. Так результат можно подтвердить наблюдаемым поведением приложения.

📚 Дополнительные бесплатные материалы

🎯 Итоговый проект

К завершению курса у вас будут два локальных Compose-проекта: сервис заметок с PostgreSQL и HTTP-счётчик с Redis. Для каждого подготовите Dockerfile и конфигурацию запуска, проверите взаимодействие контейнеров и хранение данных.

В финальном задании подключение счётчика к Redis будет нарушено. Вы воспроизведёте ошибку через HTTP, изучите настройки и журналы, найдёте причину и исправите конфигурацию API. Redis, его том и сохранённое значение при этом должны остаться без изменений.

Затем повторите тот же HTTP-запрос, получите исходное значение счётчика и убедитесь, что приложение снова работает с Redis. Сохраните исправленную конфигурацию в собственном Git-репозитории.

Курс бесплатный, задания проверяются самостоятельно. В результате у вас останутся два работающих приложения и практический опыт запуска, хранения данных и диагностики Docker Compose.

🧪 Поддержка

🧪 Самопроверка вместо ожидания ручной рецензии. Вы сверяете результат по критериям задания, ответам и предусмотренным в курсе локальным проверкам. Разборы самостоятельных упражнений доступны там, где они предусмотрены программой.

Индивидуальная проверка работ преподавателем и персональные консультации в этом курсе не предусмотрены. Формат рассчитан на самостоятельное прохождение.

🚀 О XNova

XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.

🔗 xnova.dev — другие курсы и материалы XNova.

📬 Контакты и сообщество

Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:

  • 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
  • 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
  • ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
  • 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.

Для кого этот курс

— Начинающие Python-разработчики, которые уже умеют писать небольшие программы и хотят научиться запускать собственное HTTP-приложение вместе с базой данных через Docker Compose. — QA/AQA-инженеры, которым нужно самостоятельно поднимать локальные тестовые окружения, подключать API к зависимым сервисам и разбирать ошибки запуска и соединения. — Backend-разработчики, которые пока запускают приложение и хранилище отдельно и хотят собрать воспроизводимое локальное окружение с сетью, настройками и постоянным хранением данных. — Начинающие DevOps-инженеры, которые изучают Docker и хотят закрепить основные команды на работающих приложениях с PostgreSQL и Redis, а не только на отдельных контейнерах.

Начальные требования

🧠 Что нужно знать

  • Основы Python: функции, импорты, работа с пакетами и простые условия.
  • Что такое HTTP-запрос и JSON-ответ; уметь открыть URL в браузере.
  • Уметь работать с файлами, терминалом и выполнить базовые команды Git.

Предварительное знание Docker, Docker Compose, FastAPI, PostgreSQL или Redis не требуется: нужные понятия разбираются в уроках.

🛠️ Инструменты

Понадобятся Git и GitHub-аккаунт, Python 3.12 и Docker Engine или Docker Desktop с поддержкой Compose V2. Дополнительное платное облако не требуется. В начале курса даны установка и проверка инструментов для Windows, macOS и Ubuntu Linux, а также действия при ошибках.

💻 Ресурсы компьютера

На компьютере должны запускаться локальные Docker-контейнеры FastAPI, PostgreSQL и Redis. На обычном занятии одновременно запускается только пара контейнеров одного проекта. Перед установкой Docker Desktop сверьте системные требования для вашей ОС на его официальной странице.

💰 Доступ и стоимость

Нужен собственный GitHub-репозиторий. Платные API-ключи и облачные сервисы не требуются. Курс бесплатный и использует самостоятельную проверку заданий.

Как проходит обучение

📦 Два приложения — два способа закрепить Docker Compose. Короткие объяснения и вопросы сразу переходят в работу с локальными контейнерами.

  • 🛠️ Вместе с курсом: собираете FastAPI-приложение с PostgreSQL, настраиваете сеть и том, проверяете HTTP-ответ и сохранность данных.
  • 🚀 Самостоятельно: запускаете счётчик с Redis и разбираетесь с ошибкой подключения.
  • ✅ Проверяете результат: повторяете запуск и сверяете поведение сервисов с ожидаемым.

Программа курса

В курс входят

  • 25 уроков
  • 41минута видео
  • 25 тестов
загружаем...

Наши преподаватели

Что вы получаете

  • Два небольших HTTP-приложения на FastAPI: сервис заметок с PostgreSQL и самостоятельно созданный счётчик с Redis
  • Dockerfile и конфигурации Docker Compose для запуска каждого приложения вместе с его хранилищем
  • Настроенные сети, переменные окружения и проверки готовности сервисов для локального взаимодействия контейнеров
  • Именованные тома с проверенной сохранностью данных PostgreSQL и Redis при штатном пересоздании контейнеров
  • Практический результат резервного копирования и восстановления PostgreSQL и настройки Redis AOF
  • Исправленная конфигурация счётчика после самостоятельной диагностики сбоя подключения, сохранённая в собственном Git-репозитории

Сколько стоит обучение

Бесплатно

Расскажите о курсе друзьям

Бесплатно