/
nayvok
/
livecoding
Обзор
Документация
Войти
/
nayvok
/
livecoding
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
docker-compose.yml
100 строк
3 KB
nayvok
fix: harden sessions and WebRTC recovery
17 июн 2026, 22:02
17 июн 2026, 22:02
37b9a92
Код
Авторство
О чём код?
# Базовое описание стека для деплоя. # Подходит для self-hosted Dokploy, который сам выпускает домен через Traefik # и подключается к опубликованным сервисам по docker-сети. # Локальный запуск с пробросом портов лежит в docker-compose.local.yml. # # Браузер ходит только на frontend (3000), nginx внутри контейнера раздает # статику и проксирует /api и /ws на backend:8080 в общей compose-сети. # Runner живет в отдельной внутренней сети без выхода в интернет # и доступен только backend. services: backend: build: context: ./backend container_name: livecode-backend restart: unless-stopped depends_on: runner: condition: service_started environment: PORT: "8080" # CORS не используется при same-origin через фронт-прокси, # значение оставлено как запасной вариант для прямых внешних запросов. CORS_ORIGIN: ${CORS_ORIGIN:-*} STUN_URL: ${STUN_URL:-stun:stun.l.google.com:19302} TURN_URL: ${TURN_URL:-} TURN_USERNAME: ${TURN_USERNAME:-} TURN_PASSWORD: ${TURN_PASSWORD:-} SESSION_TTL_MS: ${SESSION_TTL_MS:-300000} TASK_MAX_LENGTH: ${TASK_MAX_LENGTH:-10000} TITLE_MAX_LENGTH: ${TITLE_MAX_LENGTH:-200} MAX_SESSIONS: ${MAX_SESSIONS:-1000} SESSION_CREATE_LIMIT: ${SESSION_CREATE_LIMIT:-20} SESSION_CREATE_WINDOW_MS: ${SESSION_CREATE_WINDOW_MS:-60000} RUNNER_URL: ${RUNNER_URL:-http://runner:4000} RUNNER_TIMEOUT_MS: ${RUNNER_TIMEOUT_MS:-5000} RUNNER_DNS_REFRESH_MS: ${RUNNER_DNS_REFRESH_MS:-60000} expose: - "8080" networks: - public - runner-net healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:8080/api/health > /dev/null || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 10s frontend: build: context: ./frontend container_name: livecode-frontend restart: unless-stopped depends_on: backend: condition: service_started expose: - "3000" networks: - public runner: build: context: ./runner container_name: livecode-runner restart: unless-stopped environment: MAX_CONCURRENT_RUNS: ${MAX_CONCURRENT_RUNS:-1} EXECUTION_MEMORY_LIMIT_BYTES: ${EXECUTION_MEMORY_LIMIT_BYTES:-167772160} expose: - "4000" networks: - runner-net read_only: true tmpfs: - /tmp:size=64m,mode=1777 cap_drop: - ALL cap_add: - SETUID - SETGID - KILL security_opt: - no-new-privileges:true pids_limit: 64 mem_limit: 256m healthcheck: test: ["CMD-SHELL", "wget -q -O- http://localhost:4000/health > /dev/null || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 10s networks: public: driver: bridge runner-net: driver: bridge internal: true