C++ и Docker: контейнеризация приложений
Практическое руководство по упаковке и развертыванию C++-проектов
Краткое содержимое:
Книга «C++ и Docker: контейнеризация приложений» — это первое в своем роде практическое руководство, которое закрывает разрыв между классической разработкой на C++ и современными практиками DevOps. Если вы C++ разработчик, который хочет упростить сборку, тестирование и развертывание своих проектов, или DevOps-инженер, столкнувшийся с необходимостью контейнеризировать legacy C++ код, — эта книга для вас.
В отличие от популярных руководств по Docker для веб-приложений (Python, Node.js, Go), C++ предъявляет особые требования: статическая и динамическая линковка, управление системными библиотеками, оптимизация размера образа, работа с CMake и Vcpkg. Автор подробно разбирает все эти аспекты, предлагая готовые рецепты и шаблоны Dockerfile.
Что вы узнаете из книги:
- Основы Docker для C++: чем отличается контейнеризация скомпилированных языков от интерпретируемых, как избежать типичных ошибок (например, проблемы с glibc).
- Мультистейджинг (multi-stage builds): как собрать приложение в одном образе, а в продакшн отправить минимальный артефакт без компилятора и заголовочных файлов.
- Управление зависимостями: интеграция Docker с Conan, Vcpkg и CMake. Как кэшировать библиотеки, чтобы не пересобирать их при каждом коммите.
- DevContainers и VSCode: настройка окружения разработки в контейнере, чтобы вся команда работала в идентичных условиях.
- CI/CD пайплайны: автоматизация сборки, линковки, статического анализа и unit-тестов внутри Docker с использованием GitHub Actions и GitLab CI.
- Оптимизация размера образа: как уменьшить итоговый образ с 2 ГБ до 50 МБ с помощью Alpine, Scratch и статической компиляции.
- Деплой в продакшн: запуск микросервисов на C++ в Docker Swarm и Kubernetes, работа с healthcheck и graceful shutdown.
- Безопасность: сканирование уязвимостей, запуск контейнеров с ограниченными правами, использование read-only файловых систем.
Для кого эта книга:
- C++ разработчики, которые хотят внедрить Docker в свой рабочий процесс.
- DevOps инженеры, которым нужно поддерживать сборку и деплой C++ приложений.
- Студенты и преподаватели, изучающие современные методологии разработки ПО.
- Техлиды, планирующие миграцию монолита на C++ в микросервисную архитектуру.
Все примеры в книге основаны на реальных проектах и сопровождаются полным кодом, доступным в репозитории. Вы научитесь не просто запускать "Hello World" в контейнере, а выстраивать надежный, воспроизводимый и масштабируемый процесс от разработки до продакшна.
Книга подходит для читателей с базовым знанием C++ и начальным пониманием Docker. Если вы умеете писать простые программы на C++ и когда-либо запускали docker run, — этого достаточно, чтобы начать.