У меня есть веб-приложение Next.js (SSG и SSR), развернутое на VPS с 6 ядрами ЦП.
Приложение докеризовано и управляется через стек Docker Compose. Это за Traefik в качестве обратного прокси.
Что-то вроде:
version: '3.7'
services:
website:
image: ghcr.io/.../my-website-image
container_name: website
restart: unless-stopped
env_file:
- ./.env
labels:
- traefik-labels
- [...]
networks:
- proxy
networks:
proxy:
external: true
Эта установка довольно проста и отлично работает! Однако мне было интересно, как я могу использовать несколько ядер ЦП моей машины, чтобы немного масштабировать мое приложение Next.js.
Я слышал о таких вариантах, как pm2, которые используют кластеризацию Node.js. Тем не менее, мне было интересно, есть ли несколько простой способ использовать мою уже существующую настройку Docker для запуска нескольких контейнеров, запускающих мое приложение Next.js, и каким-то образом балансировать нагрузку между ними?
Я был бы очень признателен за некоторые советы по этому поводу.
Вы можете указать, сколько реплик приложений вы хотите развернуть (пример):
version: '3.7'
services:
website:
image: ghcr.io/.../my-website-image
container_name: website
restart: unless-stopped
deploy:
mode: replicated
replicas: 3
env_file:
- ./.env
labels:
- traefik-labels
- [...]
networks:
- proxy
networks:
proxy:
external: true
А потом, например, добавить сервис NGINX, где настроить балансировщик для распределения нагрузки между вашими репликами. :)
Спасибо! Я не знал, что это работает и в Compose!