Files
stun/docker-compose.yml
T
2026-09-29 20:20:26 +03:00

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"