Гид по технологиям

Развёртывание контейнера на DigitalOcean App Platform

9 min read Cloud Обновлено 14 Dec 2025
Развёртывание контейнера в DigitalOcean App Platform
Развёртывание контейнера в DigitalOcean App Platform

Логотип DigitalOcean

Быстрые ссылки

  • Настройка Container Registry
  • Авторизация Docker в реестре
  • Создание и загрузка образа
  • Развёртывание через App Platform
  • Обновление развёртывания
  • Управление приложением
  • Контрольные списки и откат
  • Краткое резюме

Почему это полезно

App Platform — полностью управляемый сервис DigitalOcean для развёртывания приложений из исходного кода или контейнерного образа. Если вам нужно быстро выставить контейнер в облаке без настройки собственных прокси и оркестраторов — это один из самых быстрых путей.

Важно: App Platform упрощает инфраструктуру, но не отменяет практики безопасности и контроля версий образов.

Настройка Container Registry

  1. Войдите в панель управления DigitalOcean и в левой боковой панели выберите “Container Registry”.
  2. Создайте новый реестр: задайте имя длиной от 3 до 63 символов, допускаются буквы, цифры и дефисы.
  3. Выберите тариф: Free, Basic или Professional. Free даёт одну репозиторию и 500 МБ хранилища.
  4. Нажмите “Create Registry” — provisioning обычно занимает несколько секунд.

Экран создания Container Registry в DigitalOcean

Совет: выберите имя реестра понятное команде и совпадающее с наименованием проекта. Оно будет частью пути образов: registry.digitalocean.com/ваш-реестр/имя:тег

“Docker login” в ваш реестр

После создания вы попадёте на страницу управления реестром. Нажмите “Actions” → “Download Docker Credentials”.

Скачивание Docker-креденшалов для Container Registry

Выберите опцию “Credential permissions” → “Read & Write”, чтобы иметь возможность загружать образы. Нажмите “Download Config” — вы получите файл конфигурации для Docker.

Параметры загрузки конфигурации Docker

Переименуйте скачанный файл в

config.json

и переместите в отдельную директорию. При вызове Docker указывайте флаг

--config

с путём к этой директории: Docker загрузит config.json внутри и сможет аутентифицироваться в вашем реестре.

Пример команд:

mkdir ~/do-config && mv docker-config.json ~/do-config/config.json
docker --config ~/do-config pull my-image:latest

Альтернативы: можно использовать doctl для логина в реестр:

doctl registry login

doctl автоматически обновит Docker config и выполнит логин в реестр, если у вас настроен doctl с токеном API.

Важно: храните config.json в защищённом месте и не добавляйте его в git.

Создание и загрузка образа

После настройки реестра загрузите туда свой образ Docker. В этом руководстве мы воспользуемся официальным Apache2-образом httpd:latest в качестве примера.

Команды для скачивания, тегирования и отправки в ваш реестр:

# скачать с Docker Hub
docker pull httpd:latest

# присвоить тег с путём в вашем Container Registry
docker tag httpd:latest registry.digitalocean.com/my-registry/httpd:latest

# отправить в Container Registry (указывайте --config если нужно)
docker --config ~/do-config push registry.digitalocean.com/my-registry/httpd:latest

Не забудьте заменить my-registry на имя вашего реестра. После успешного push вы увидите образ в веб‑интерфейсе реестра.

Интерфейс Container Registry в DigitalOcean

Советы по тегированию:

  • Используйте семантические теги или уникальные теги по дате/commit для каждого релиза.
  • Избегайте перебивки одного и того же тега (например, latest) для продакшен‑образов — это затрудняет откат.

Развёртывание через App Platform

  1. Перейдите в App Platform: в левой панели откройте “Apps” и нажмите “Launch Your App”.

Интерфейс App Platform DigitalOcean

  1. В качестве источника репозитория выберите “DigitalOcean Container Registry”.

Выбор Container Registry как источника

  1. На следующем экране выберите нужный образ из выпадающего списка “Repository” и укажите тег в “Tag”. Нажмите “Next” для продолжения.

  2. Сконфигурируйте компонент контейнера: HTTP Routes, Environment Variables, Run Command и т.д. Для простого Apache-контейнера можно оставить большинство значений по умолчанию.

Настройка контейнера в App Platform

  1. Порт: укажите HTTP Port = 80 (Apache слушает порт 80 по умолчанию). Нажмите “Edit” и измените порт при необходимости.

  2. Укажите имя приложения и регион развёртывания. На момент написания App Platform поддерживается не во всех регионах — выбирайте ближайший к пользователям.

Выбор региона и имени приложения

  1. Выберите план App Platform: Container Images не доступны на бесплатном Starter-плане. Для простого Apache подойдёт Basic с одним инстансом 5 $/мес и 512 МБ.

Планы Container Registry и App Platform

  1. Нажмите “Launch Basic App” — начнётся разворачивание. Через несколько минут приложение будет доступно по ссылке в панели.

Обновление развёртывания

App Platform автоматически инициирует новый деплой, когда в реестре появляется новый образ с тем же тегом (в зависимости от кэширования и конфигурации). Практики:

  • Для надёжного обновления используйте уникальные теги (например, commit SHA или дату) для каждой сборки.
  • Если вы перезаписываете образ с тем же тегом, App Platform может не заметить изменения из‑за кэша — вручную инициируйте деплой или смените тег.

Важно: используйте конвейер CI/CD (GitHub Actions, GitLab CI) для автоматической сборки и пуша образов с консистентным тегированием.

Управление приложением

На странице приложения вы увидите:

  • Insights — метрики использования ресурсов;
  • Deployments — журнал деплоев и истории релизов;
  • Logs — поток логов контейнера в реальном времени;
  • Console — доступ к shell внутри контейнера.

Дашборд App Platform и логи контейнера

Вкладка “Components” позволяет изменить конфигурацию контейнера (образ и тег, маршруты HTTP, порт). Переменные окружения, указанные здесь, относятся к конкретному компоненту; переменные на вкладке “Settings” применяются ко всем компонентам приложения.

Чтобы удалить приложение, нажмите красную кнопку “Destroy” внизу страницы Settings. Чтобы удалить образ, перейдите в Container Registry, нажмите три точки справа от имени образа и выберите “Delete”.

Настройки компонентов и переменных окружения

Когда такой подход хорош, а когда нет

Преимущества:

  • Очень быстрое развёртывание простых контейнеров и статических сайтов;
  • Не нужно вручную настраивать балансировщики и прокси;
  • Встроенный CI/CD возможен через интеграции.

Ограничения и случаи, когда стоит выбрать другое решение:

  • Микросервисы с большим количеством компонентов и сложной сетевой связью — полноценный Kubernetes или Docker Swarm даст больше контроля;
  • Высоконагруженные stateful-приложения с требованием тонкой оптимизации инфраструктуры;
  • Нужна полная контроль над сетевой политикой, node-level настройками или нестандартным оборудованием.

Безопасность и приватность

Рекомендации по безопасности:

  • Создавайте минимально привилегированные креденшелы: выдавайте Read & Write только там, где это необходимо.
  • Не храните config.json в публичных репозиториях.
  • Используйте уникальные теги и цифровые подписи образов, если возможно.
  • Для секретов в App Platform используйте защищённые переменные окружения.

Конфиденциальность и GDPR: если контейнеры обрабатывают персональные данные граждан ЕС, проверьте соответствие региона развёртывания и договоров обработки данных у DigitalOcean.

Критерии приёмки

  • Приложение отвечает на HTTP-запросы по ожидаемому URL и порту (обычно 80/443).
  • Логи контейнера доступны в App Platform и не содержат критических ошибок при запуске.
  • Новые сборки с уникальными тегами автоматически деплоятся (или процесс деплоя запускается вручную/CI).
  • Мониторинг показывает приемлемое использование CPU/RAM и отсутствие утечек за первые 24 часа нагрузочного тестирования.

Руководство по откату и план действий при инциденте

  1. Если новый деплой приводят к ошибкам, немедленно откатитесь к предыдущему тегу через Components → выберите предыдущий тег → Redeploy.
  2. Если откат невозможен, переключите масштаб до 0 или Destroy и восстановите из backup/previous image.
  3. Используйте Console для временной диагностики (ps, tail -f логов) и определения корня проблемы.
  4. После восстановления проанализируйте CI/CD pipeline и внедрите gated deployment (канареечный релиз или проверку smoke tests перед полным rollout).

Пример плана быстрого отката:

  • Т = 0: обнаружен инцидент — откат к последнему рабочему тегу
  • Т + 5 мин: если откат не помог — выключение проблемного компонента и переключение на standby образ
  • Т + 15–30 мин: сбор логов, инициирование postmortem

Чек-листы по ролям

Разработчик:

  • Указан корректный ENTRYPOINT/CMD в Dockerfile;
  • Образ собирается локально и проходит smoke тесты;
  • Каждый релиз имеет уникальный тег (commit SHA или дата);
  • Нет секретов в образе или в Dockerfile.

Оператор / DevOps:

  • Container Registry создан и имеет корректные права доступа;
  • Docker-клиент умеет авторизоваться в реестре (проверить docker –config pull);
  • Настроены мониторинг и алерты на CPU/RAM/HTTP 5xx;
  • Процедура отката проверена и документирована.

Product / менеджер:

  • Понятны SLO/меры успеха развёртывания (время отклика, доступность);
  • Запланированы канареечные релизы для критичных функций;
  • Есть контактная информация ответственных за инциденты.

Мини‑методология: от кода до живого контейнера (шаги)

  1. Сборка образа в CI, тесты и статический анализ.
  2. Тегирование образа с уникальным идентификатором.
  3. Push в DigitalOcean Container Registry.
  4. App Platform получает новый образ и разворачивает компонент (или CI вызывает redeploy через API).
  5. Smoke test и мониторинг, затем постепенный rollout.

Примеры альтернативных подходов

  • doctl + API: автоматизируйте операции через doctl и DigitalOcean API для гибких сценариев (скрипты, terraform).
  • GitHub/GitLab integration: развертывание напрямую из репозитория с построением образа в облаке.
  • Kubernetes (DigitalOcean Kubernetes): для сложных мультикомпонентных систем с подробной сетевой настройкой.

Типичные ошибки и как их избежать

  • Ошибка: образ не загружается в реестр — причина чаще всего в неверном auth config.json. Решение: проверьте docker –config pull и doctl registry login.
  • Ошибка: приложение не запускается — посмотрите логи и Console; убедитесь, что выставлен правильный HTTP Port (например, 80 для Apache).
  • Ошибка: обновление не срабатывает — используйте уникальные теги для каждого обновления.

Фактические параметры и ориентиры

  • Free tier Container Registry: 1 репозиторий, 500 МБ.
  • Базовый инстанс App Platform: 5 $/мес за 512 МБ (проверьте актуальные цены в панели).
  • Регионы: App Platform доступна не во всех регионах — выбирайте ближайший.

Шаблон проверки перед продом (SOP)

  • Собрать образ в CI и успешно пройти тесты;
  • Протестировать образ в staging App Platform;
  • Провести smoke тесты (HTTP 200, авторизация, основные флоу);
  • Убедиться, что мониторинг и алерты настроены;
  • Выполнить релиз в production и наблюдать метрики 15–30 минут.

Короткий план миграции в App Platform (high-level roadmap)

  1. Подготовка Dockerfile и тестовой сборки.
  2. Настройка Container Registry и doctl (если используете).
  3. Настройка staging-приложения в App Platform и автоматизация CI.
  4. Пошаговый rollout в production с мониторингом и планом отката.

Глоссарий (1 строка на термин)

  • Container Registry — приватный реестр образов Docker, хранимых в облаке;
  • App Platform — PaaS от DigitalOcean для развёртывания приложений и контейнеров;
  • doctl — клиент командной строки DigitalOcean;
  • Tag — метка образа (версия) в реестре.

Советы по миграции и совместимости

  • Если вы мигрируете с самоуправляемого Docker Host, проверьте зависимости на уровне сети и томов: App Platform ограничивает прямой доступ к node-level хранилищу.
  • Для stateful сервисов рассмотрите Managed Databases от DigitalOcean и подключайте их через доступные интеграции.

Контроль качества: тесты и критерии приёмки

Тесты, которые стоит выполнить перед релизом:

  • Unit и интеграционные тесты в CI;
  • Smoke test после развёртывания (запросы к основным endpoint);
  • Нагрузочное тестирование базовых сценариев для оценки ресурсов;
  • Проверка логов на наличие ошибок при старте.

Критерии приёмки перечислены в соответствующем разделе выше.

Итог и рекомендации

DigitalOcean App Platform вместе с Container Registry — удобный способ быстро развёртывать контейнеры без глубокого погружения в управление инфраструктурой. Подходит для простых веб‑сервисов, статических сайтов и прототипов. Для сложных распределённых систем лучше рассмотреть Kubernetes.

Важно держать процессы релиза и отката простыми: уникальные теги, автоматические сборки, мониторинг и план отката — ключевые элементы безопасного развёртывания.

Ключевые источники действий: Container Registry → Download Docker Credentials → docker push образ → App Platform: Launch Your App → выбрать образ → Launch.


Краткое резюме

  • Создайте Container Registry и скачайте Docker конфиг;
  • Запушьте образ с уникальным тегом;
  • Разверните через App Platform, выберите порт и план;
  • Настройте мониторинг, используйте чек‑листы и план отката.

Важно: всегда храните доступы и секреты в защищённом виде и тестируйте процедуру отката заранее.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка trim на Lutron Caseta — убрать мерцание ламп
Умный дом

Настройка trim на Lutron Caseta — убрать мерцание ламп

Как улучшить понимание Alexa — 5 простых шагов
Умный дом

Как улучшить понимание Alexa — 5 простых шагов

Как улучшить Wi‑Fi для камер наблюдения
Сети

Как улучшить Wi‑Fi для камер наблюдения

Выключение ламп через Nest и IFTTT
Умный дом

Выключение ламп через Nest и IFTTT

Как убрать напоминания о поездках в Google Now
Android.

Как убрать напоминания о поездках в Google Now

Изменить место сохранения по умолчанию в Windows
Windows

Изменить место сохранения по умолчанию в Windows