Перейти к содержанию

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 и архитектуру читатель записывает из своего окружения.

Окружение и сборка

  1. Образ и контейнер веб-приложения
  2. Docker Engine, Desktop и рабочий context
  3. Базовый образ и API каталога
  4. Dockerfile для Node.js API
  5. Контекст сборки и .dockerignore

Запуск, кеш и данные

  1. Запуск, порты и остановка контейнера
  2. Кеш сборки и lockfile
  3. Теги, пересоздание и уборка ресурсов
  4. Bind mounts и named volumes

Compose, клиент и передача

  1. Каталог сервисов в Docker Compose
  2. Клиент Vite: разработка и готовая сборка
  3. Передача образов через 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 и резервное копирование в пакет не входят.

Все серии · Развёртывание и масштабирование