Loading...

Обучение / Развёртывание

Как развернуть приложение Next.js на cdn.com.tr

Выпустите приложение Next.js в production без управления серверами: один раз контейнеризируйте его, отправьте в Git, и cdn.com.tr соберёт его, запустит как управляемое container app и будет отдавать с CDN edge с собственным доменом и автоматическим HTTPS.

8 мин чтения Средний Updated

Как развернуть приложение Next.js на cdn.com.tr

Что вам понадобится

Вам нужны три вещи: приложение Next.js (подойдёт и существующее), Git-репозиторий для него (GitHub работает «из коробки») и аккаунт cdn.com.tr. Вам не придётся разворачивать сервер, устанавливать Node на VM или настраивать reverse proxy — платформа берёт на себя среду выполнения, TLS и доставку. Единственное изменение на стороне приложения — указать Next.js собирать автономную сборку, чтобы она чисто работала в контейнере.

Подготовьте приложение к контейнеризации

Сначала включите standalone-вывод Next.js. Он упаковывает только те файлы, которые нужны серверу, что делает образ маленьким, а контейнер — простым.

next.config.js

// next.config.js
module.exports = {
  output: 'standalone',
};

Добавьте Dockerfile

Небольшой многоэтапный Dockerfile собирает приложение на одном этапе и передаёт на следующий только результат сборки для выполнения. Закоммитьте этот файл в корень репозитория.

Dockerfile

# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Runtime stage
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

Деплой из Git (рекомендуется)

В панели cdn.com.tr создайте container app и подключите свой Git-репозиторий. Платформа читает ваш Dockerfile, собирает образ и запускает контейнер — сервер сборки поддерживать не нужно. После этого деплой — это просто push в вашу ветку: каждый push запускает новую сборку и выкатку без простоя.

Выпустите изменение

git add .
git commit -m "Update homepage"
git push origin main
# cdn.com.tr builds the new image and rolls it out automatically
Как развернуть приложение Next.js на cdn.com.tr — Деплой из Git (рекомендуется)
Управляемые платформы и container apps на cdn.com.tr.

Или разверните через CLI cdnctl

Предпочитаете командную строку или CI-пайплайн? Операторский CLI cdnctl управляет вашими container apps как кодом. Войдите один раз, выберите свой аккаунт, затем создайте приложение из образа, который вы отправили в registry, — и используйте тот же инструмент, чтобы смотреть логи в реальном времени, масштабировать или откатывать. Именно это делает cdn.com.tr быстрым для выпуска: одна команда вместо кликов по консоли.

cdnctl
cdnctl login
cdnctl accounts use <account_uuid>

# create the app from your pushed image, on your domain
cdnctl container apps create \
  --name my-nextjs \
  --image registry.example.com/acme/my-nextjs --tag 1.0.0 \
  --port 3000 --domain app.example.com \
  --healthcheck /api/health --healthcheck-type http

# then, anytime:
cdnctl container apps logs   --app <app_uuid> --tail 100
cdnctl container apps scale  --app <app_uuid> --replicas 2
cdnctl container apps deploy --app <app_uuid>

Собственный домен, HTTPS и edge

Направьте домен на приложение, и cdn.com.tr автоматически выпустит и продлит SSL-сертификат — без ручного certbot. Ваше приложение Next.js теперь работает за CDN edge, так что статические ресурсы кешируются и доставляются близко к каждому посетителю, WAF фильтрует вредоносный трафик, а всплески трафика поглощаются на edge, а не бьют по одному контейнеру. Вы получаете быстрый, безопасный production-деплой Next.js без управления инфраструктурой под ним.

Кому подходит

Маркетинговые и контентные сайты

Страницы Next.js, отдаваемые с edge, загружаются быстро по всему миру и остаются доступными во время запуска или вирусного всплеска.

Full-stack приложения и API

Запускайте маршруты API и SSR вашего Next.js как управляемый контейнер с автоматическим HTTPS и WAF на входе.

Команды с частыми релизами

Деплой через git push с выкаткой без простоя подходит для CI и частых релизов без нянчения с серверами.

Вопросы и ответы о деплое Next.js

Работают ли SSR и маршруты API, или только статический экспорт?

Работает и то, и другое. Поскольку приложение работает как настоящий Node-контейнер (а не статический экспорт), серверный рендеринг, маршруты API и middleware работают в обычном режиме. CDN кеширует то, что можно кешировать, и пропускает динамические запросы к контейнеру.

Как работают обновления и откаты?

Каждый push в подключённую ветку собирает новый образ и выкатывает его без простоя. Если сборка не удалась, продолжает работать предыдущая версия, так что неудачный коммит не кладёт сайт.

Нужно ли мне управлять сервером, версией Node или SSL?

Нет. Среда выполнения контейнера, масштабирование, TLS-сертификаты и edge управляются за вас. Вы контролируете приложение и его Dockerfile; инфраструктура под ним обслуживается платформой.