Чему вы научитесь
- Создавать небольшие HTTP-приложения на FastAPI и проверять их ответы до и после контейнеризации
- Различать Docker-образ и контейнер, управлять запуском, остановкой и удалением контейнеров
- Писать Dockerfile для Python-приложения, собирать образ и запускать сервис из собственного образа
- Различать внутренние порты контейнера и порты, опубликованные на компьютере
- Описывать несколько связанных сервисов в Docker Compose и запускать их одной командой
- Настраивать переменные окружения и подключать FastAPI к PostgreSQL и Redis
- Использовать имена сервисов и сеть Compose для взаимодействия контейнеров, не обращаясь к localhost другого контейнера
- Проверять готовность зависимых сервисов и отличать запущенный контейнер от приложения, принимающего запросы
- Подключать именованные тома и проверять сохранность данных после штатного удаления и повторного создания контейнеров
- Выполнять резервное копирование и восстановление учебной базы PostgreSQL с проверкой сохранённых записей
- Настраивать сохранение данных Redis с помощью AOF и проверять значение счётчика после повторного запуска проекта
- Использовать docker compose config, ps и logs для проверки конфигурации, состояния сервисов и поиска ошибок
- Диагностировать нарушения соединения между FastAPI и хранилищем по HTTP-ответам, настройкам и журналам контейнеров
- Восстанавливать работу 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-запрос и проверите, что данные остались прежними. Так результат можно подтвердить наблюдаемым поведением приложения.
📚 Дополнительные бесплатные материалы
- 📄 Docker Compose: что это, как работает и как запустить приложение
- 📄 Команды Docker Compose: up, down, build, logs, exec — шпаргалка
- 📄 Kubernetes с нуля: Pod, Deployment, Service и Ingress
- 📄 Readiness и Liveness Probes в Kubernetes: почему их путают
🎯 Итоговый проект
К завершению курса у вас будут два локальных 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-запрос и 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-репозитории