Docker для веб-проектов: API и клиент каталога
Создадим professorweb-container-lab: собственный API каталога на Node.js и отдельный клиент Vite. На одном небольшом проекте разберём устройство образа, контекст сборки, запуск, кеш, жизненный цикл, исходники и постоянные данные, а затем перейдём к двум сервисам и передаче образов.
Нужны основы HTTP, HTML и JavaScript. Команды рассчитаны на актуальный Docker Engine/Desktop и Compose v2. Выбран профиль Node.js 24, фиксированный Vite 8.0.10 и nginx для раздачи готовых файлов. Конкретные patch-версии образов, digest и архитектуру читатель записывает из своего окружения.
Окружение и сборка
- Образ и контейнер веб-приложения
- Docker Engine, Desktop и рабочий context
- Базовый образ и API каталога
- Dockerfile для Node.js API
- Контекст сборки и .dockerignore
Запуск, кеш и данные
- Запуск, порты и остановка контейнера
- Кеш сборки и lockfile
- Теги, пересоздание и уборка ресурсов
- Bind mounts и named volumes
Compose, клиент и передача
- Каталог сервисов в Docker Compose
- Клиент Vite: разработка и готовая сборка
- Передача образов через registry
Собственный учебный проект
Скачать исходники и состояния. Архив содержит полные start/after всех двенадцати занятий, конечный professorweb-container-lab, STATE и ожидаемые ручные сценарии. Первые два состояния — модель и паспорт окружения; API появляется в третьем, Dockerfile в четвёртом, Compose в десятом, клиент в одиннадцатом.
Перед сборкой frontend нужно получить настоящий package-lock.json по инструкции урока 11. Он намеренно отсутствует: установка не выполнялась, дерево зависимостей не подделывалось. API не имеет сторонних зависимостей и содержит полный lockfile своего корневого пакета. Dev- и prod-файлы Compose самостоятельные: выбирайте один нужный файл, не используйте их как неявные overrides.
Выполнение Docker, Node.js, npm, браузера, сборок, HTTP-запросов, registry и развёртывания не проводилось; результаты в уроках ожидаемые, example_execution: not_run. Named volume содержит учебный JSON одного писателя, не транзакционную многопользовательскую базу. Внешний deployment, HTTPS и резервное копирование в пакет не входят.