Loading...

Обучение / Контейнеры и платформа

Разверните Docker-контейнер на CDN и отдавайте его с edge

Чтобы разместить Docker-контейнер онлайн, не обязательно держать собственный сервер. На управляемой платформе cdn.com.tr вы разворачиваете свой Docker-образ как управляемое container app, и он отдаётся через CDN edge — с custom domain, автоматическим HTTPS, cache и WAF на входе. Вот что значит "Docker на CDN", как развернуть Docker-контейнер из панели или через cdnctl CLI, как запустить целый docker-compose стек с add-ons, и как работает push-to-deploy из Git.

Updated

Разверните Docker-контейнер на CDN и отдавайте его с edge

Что значит "Docker на CDN"

В классическом виде CDN стоит перед сайтом, который вы уже где-то запускаете: edge кеширует ваш статический origin и ускоряет его. Это режим Pull, и он отлично работает, когда у вас уже есть сервер. Но если у вас есть Docker-образ — backend API, веб-приложение, worker — вам всё равно нужна машина, чтобы реально запустить этот контейнер. Именно этот пробел закрывает управляемая container-платформа.

На cdn.com.tr вы разворачиваете сам Docker-образ. Платформа запускает ваш контейнер как управляемое container app и ставит его за CDN edge, так что тот же образ, который у вас работает локально через docker run, теперь отдаётся на реальном домене с автоматическим HTTPS, edge-кешированием и WAF на входе — без того, чтобы вам разворачивать VM, устанавливать Docker, настраивать TLS или поднимать reverse proxy. Вы приносите образ и port; платформа берёт на себя его запуск и глобальную отдачу. Именно это имеют в виду под "Docker на CDN" или "Docker-хостингом" в управляемом виде: контейнер — это origin, а edge его доставляет.

Вариант A — развернуть из панели (без CLI)

No-code путь целиком проходит в Management Panel cdn.com.tr. В разделе CDN Hosting / Platforms выберите Managed Container и создайте app из своего образа. Укажите registry, образ и tag (например, registry.example.com/acme/app:1.0.0), задайте port, который слушает ваш контейнер (скажем, 8080), и добавьте путь healthcheck, чтобы платформа знала, когда контейнер действительно готов (HTTP-путь вроде /health, TCP-проверка или ничего). Добавьте custom domain, на котором хотите его отдавать, и если образ лежит в приватном registry, подключите ранее сохранённые registry credentials.

Затем нажмите Deploy. Платформа скачивает образ, запускает контейнер, дожидается прохождения healthcheck и выводит его в онлайн за edge. В разделе Operations вашего app можно наблюдать за ходом деплоя, смотреть логи в реальном времени, видеть status и revisions, перезапускать или откатываться — всё без терминала. Это правильный путь, если вы хотите видеть всё визуально или разворачиваете один контейнер вручную.

Вариант B — cdnctl CLI

cdnctl — это операторский инструмент командной строки для cdn.com.tr, и он управляет той же платформой. Войдите один раз и выберите свой account, чтобы каждая команда знала, с чем работать: выполните cdnctl login --email you@example.com --password ... (или cdnctl configure --endpoint https://cdn.com.tr --token <token>, если используете API-токен), затем cdnctl accounts use <account_uuid>. Перед первым деплоем cdnctl container preflight --account <uuid> проверяет, что account готов.

Создание и деплой контейнера — это два шага. Сначала опишите его: cdnctl container apps create --account <uuid> --name mobile-backend --image registry.example.com/acme/app --tag 1.0.0 --port 8080 --healthcheck /health --healthcheck-type http --domain api.example.com (добавьте --registry-credential <uuid> для приватного образа и --persistent-mount-path /app/data --persistent-storage-gb 5, если нужен persistent volume). Затем разверните: cdnctl container apps deploy --account <uuid> --app <app_uuid>. Чтобы получить мгновенный preview без настройки DNS, cdnctl container apps expose --account <uuid> --app <app_uuid> выдаёт неизменяемый URL вида <uid>.cdn.com.tr, который сразу готов к использованию.

Повседневная работа тоже вся здесь: apps logs --tail 100 для просмотра логов, apps status и apps wait --status running --timeout 300 для проверки готовности, apps restart, apps scale --replicas 0 для паузы (или масштабирования), apps show для просмотра app и его revisions, apps rollback --revision <uuid> для отката на заведомо рабочий релиз, apps diagnose, когда что-то не так, и apps update ... --env-json '{"APP_URL":"https://api.example.com"}' для изменения конфигурации. Для приватных образов создайте credential один раз командой cdnctl container registry-credentials create --account <uuid> --name docker --registry-url https://index.docker.io/v1/ --username <user> --password <token> и указывайте его при создании app.

Многосервисные стеки, add-ons, jobs и данные

Реальные приложения редко состоят из одного контейнера. Если у вас уже есть docker-compose, можно развернуть весь стек целиком: cdnctl container compose preview --account <uuid> --file docker-compose.yml показывает, что будет создано, а cdnctl container compose apply --account <uuid> --file docker-compose.yml --yes разворачивает многосервисный стек. Ваш compose-файл становится набором managed container apps на платформе.

Для компонентов, от которых зависит ваше приложение, подключайте managed add-ons вместо того, чтобы запускать их самостоятельно: cdnctl container addons enable-redis, enable-postgres, enable-database или enable-nats разворачивают сервис и передают его connection-данные в ваше app как переменные окружения (используйте --env-prefix, чтобы управлять их именами). Фоновые и запланированные задачи покрываются jobs: cdnctl container jobs create --account <uuid> --app <app_uuid> --name sync --schedule "*/30 * * * *" --method POST --path "/run" регистрирует cron-подобную job, которая вызывает ваше app по расписанию, а jobs run [--wait] запускает её вручную. А для наполнения состояния cdnctl container imports database --file dump.sql.gz загружает SQL-дамп, а cdnctl container imports files --file data.tar.gz --target-path /app/data распаковывает файлы в persistent volume.

Отдача через CDN edge

Смысл запускать контейнер здесь, а не на голой VM, — в том, что стоит перед ним. После деплоя ваше app доступно на подключённом custom domain и отдаётся через CDN edge. TLS настраивается автоматически — вы получаете HTTPS без покупки, установки или продления сертификата, — а кешируемые ответы кешируются на edge рядом с вашими посетителями, так что контейнер выполняет меньше работы, а пользователи получают более быстрые ответы. WAF стоит на входе, фильтруя вредоносный трафик и поглощая атаки до того, как они достигнут вашего контейнера.

Custom domain не нужен, чтобы начать тестирование. cdnctl container apps expose (или то же действие в панели) выдаёт неизменяемый URL вида <uid>.cdn.com.tr, который сразу отдаёт ваш работающий контейнер — идеально для preview, демо или подключения мобильного клиента к backend до готовности DNS. Когда будете готовы к production, направьте свой реальный домен на app, и он будет отдаваться уже на нём — с тем же автоматическим HTTPS и защитой edge.

Деплой из Git — CI/CD и promote без простоя

Для постоянного проекта обычно не хочется каждый раз вручную запускать команду деплоя. Подключите репозиторий в панели, и push сможет запускать auto-deploy: при push платформа автоматически собирает и разворачивает новую версию, так что деплой — это просто git push. Это путь CI/CD для контейнеров на CDN.

Чтобы production оставался безопасным, деплои проходят через pipeline staging → production. Push сначала разворачивает вашу Staging-среду, где можно проверить новую версию на preview URL; когда всё выглядит правильно, один ручной Promote мгновенно переключает этот build в Production. Поскольку promote — это мгновенная замена уже собранного и уже прогретого релиза, production переключается без простоя — без пересборки, без холодного старта для ваших посетителей. cdnctl вписывается в тот же процесс из CI pipeline: авторизуйтесь по токену, затем создавайте/разворачивайте app как шаг сборки, так что ваш существующий GitHub или GitLab CI тоже может управлять деплоями.

Что запускают как Docker-контейнеры на CDN

Backend API и веб-приложения

Разверните свой сервис на Node, Python, Go, PHP или Java как контейнер и отдавайте его на реальном домене с автоматическим HTTPS и WAF на входе.

docker-compose стеки

Возьмите свой существующий docker-compose файл и разверните весь многосервисный стек с managed Redis, Postgres или NATS, подключёнными как переменные окружения.

Backend для мобильных и приложений

Разверните backend, получите мгновенный URL вида <uid>.cdn.com.tr, чтобы протестировать клиент, а затем сделайте promote в production на своём custom domain без простоя.

Docker на CDN — часто задаваемые вопросы

Можно ли запустить Docker-контейнер на CDN?

Да. На управляемой платформе cdn.com.tr вы разворачиваете свой Docker-образ как управляемое container app, и он отдаётся через CDN edge — с custom domain, автоматическим HTTPS, cache и WAF на входе. Вам не нужно разворачивать или обслуживать сервер — вы приносите образ и port, а платформа его запускает.

Как развернуть Docker-контейнер — через панель или командную строку?

Оба способа управляют одной и той же платформой. Используйте Management Panel (CDN Hosting / Platforms → Managed Container), чтобы создать app из образа и сделать Deploy визуально, или используйте cdnctl CLI: cdnctl container apps create ... затем cdnctl container apps deploy. CLI также хорошо вписывается в CI/CD.

Нужен ли custom domain, чтобы протестировать контейнер?

Нет. Выполните cdnctl container apps expose (или то же действие в панели), и вы получите неизменяемый URL вида <uid>.cdn.com.tr, который сразу отдаёт ваш работающий контейнер — без настройки DNS. Подключите custom domain, когда будете готовы к production.

Можно ли развернуть целый docker-compose стек?

Да. cdnctl container compose preview показывает, что будет создано, а cdnctl container compose apply --file docker-compose.yml --yes разворачивает многосервисный стек. Можно также подключить managed add-ons — Redis, Postgres или NATS, — чтобы их connection-данные приходили в ваше app как переменные окружения.

Как работает деплой из Git и безопасен ли он для production?

Подключите репозиторий, и push сможет запускать auto-deploy. Деплои проходят через pipeline staging → production: push разворачивает Staging, а один ручной Promote мгновенно переключает build в Production. Поскольку promote — это мгновенная замена уже собранного релиза, production переключается без простоя.