49 lines
3.3 KiB
YAML
49 lines
3.3 KiB
YAML
# Описываем список запускаемых сервисов (контейнеров)
|
|
services:
|
|
# Название нашего сервиса внутри экосистемы Docker Compose
|
|
stun:
|
|
# Путь к папке, где находится Dockerfile для сборки образа.
|
|
# Точка означает текущую директорию.
|
|
build: .
|
|
|
|
# Имя и тег, которые будут присвоены собранному Docker-образу
|
|
image: go-stun-server:latest
|
|
|
|
# Фиксированное имя контейнера в операционной системе (для удобства просмотра через `docker ps`)
|
|
container_name: stun_server
|
|
|
|
# Сетевой режим: "host". Контейнер использует сетевой стек хоста напрямую.
|
|
# Включает максимальную производительность UDP, убирает задержки и накладные расходы
|
|
# стандартного механизма маршутизации Docker (docker-proxy). Порты пробрасывать не нужно.
|
|
network_mode: "host"
|
|
|
|
# Политика перезапуска: контейнер будет автоматически перезапускаться при падении приложения,
|
|
# сбое Docker-демона или полной перезагрузке самого VPS (если только вы не остановили его вручную).
|
|
restart: unless-stopped
|
|
|
|
# Переменные окружения, которые прокидываются внутрь приложения
|
|
environment:
|
|
# Задаем переменную PUBLIC_IP. Конструкция \${VARIABLE:-default} означает:
|
|
# взять значение PUBLIC_IP из файла .env системы, а если его там нет, использовать дефолтный 127.0.0.1
|
|
- PUBLIC_IP=${PUBLIC_IP:-127.0.0.1}
|
|
|
|
# Секция управления ресурсами при развертывании (работает как в Swarm, так и в стандартном Compose)
|
|
deploy:
|
|
resources:
|
|
# Устанавливаем жесткие лимиты, которые контейнер не сможет превысить
|
|
limits:
|
|
# Выделяем серверу максимум 2 процессорных ядра (ядра CPU)
|
|
cpus: '2'
|
|
# Ограничиваем оперативную память до 128 Мб (для STUN этого более чем достаточно)
|
|
memory: 128M
|
|
|
|
# Настройка ротации и сбора логов контейнера (важно для защиты диска от переполнения)
|
|
logging:
|
|
# Используем стандартный драйвер логирования в JSON-файлы
|
|
driver: "json-file"
|
|
options:
|
|
# Максимальный размер одного файла лога — 10 Мегабайт
|
|
max-size: "10m"
|
|
# Хранить не более 3 архивных файлов логов. Старые логи будут автоматически затираться.
|
|
max-file: "3"
|