📦 Docker Compose
Файл docker-compose.yml описывает все сервисы проекта. Здесь разбираем структуру, ключевые параметры и типичные операции.
🗺️ Обзор сервисов
8 сервисов в docker-compose.yml
📁 Структура файла
Определения контейнеров
- • bot, postgres, n8n, ollama
- • prometheus, alertmanager
- • grafana, cadvisor
Постоянные хранилища
- • postgres_data
- • n8n_data
- • ollama_data
- • voice_data
Сеть по умолчанию
- • clowbot_default
- • Внутренний DNS
- • Изоляция сервисов
🤖 Сервис Bot (подробно)
services:
bot:
build:
context: ./bot
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "${BOT_PORT:-28000}:8000"
environment:
TZ: ${TZ:-Asia/Bangkok}
TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
DATABASE_URL: postgresql://clowbot:clowbot_pass@postgres:5432/clowbot
OLLAMA_BASE_URL: http://ollama:11434
N8N_BASE_URL: http://n8n:5678
INTERNAL_API_TOKEN: ${INTERNAL_API_TOKEN}
volumes:
- voice_data:/data/voice
- ./dist:/data/dist:ro
extra_hosts:
- "host.docker.internal:host-gateway"🔧 Ключевые параметры
context: ./bot — путь к директории с Dockerfile.
Bot ждёт пока PostgreSQL станет healthy. n8n тоже ждёт Postgres.
Формат: HOST_PORT:CONTAINER_PORT
${BOT_PORT:-28000}:8000${POSTGRES_PORT:-25432}:5432.env файл. Никогда не хардкодить в compose!voice_data:/data/voice./dist:/data/dist:ro:ro — read-only mount (безопасность, prevents accidental writes)host.docker.internal:host-gateway — позволяет контейнерам обращаться к localhost хоста.
💾 Volumes (хранилища)
База данных PostgreSQL — все данные проекта.
clowbot_postgres_dataCredentials, encryption key, настройки n8n.
clowbot_n8n_dataСкачанные модели LLM (~4GB каждая).
clowbot_ollama_dataВременные голосовые файлы (удаляются).
clowbot_voice_data⌨️ Частые команды
Запуск и остановка
docker compose up -dЗапуск всех сервисов в фонеdocker compose downОстановка всех сервисовdocker compose restart botПерезапуск конкретного сервисаМониторинг и логи
docker compose psСтатус всех сервисовdocker compose logs -f botЛоги сервиса bot в реальном времениdocker compose logs --tail=100 n8nПоследние 100 строк логов n8nСборка и обновление
docker compose build botПересборка образа botdocker compose up -d --buildПересборка и запуск всех сервисовdocker compose pullОбновление готовых образов🔧 Troubleshooting
Service не запускается
Сначала смотрите логи. Частые причины: отсутствие .env, неправильный токен, база недоступна.
Health check падает
Если postgres показывает (unhealthy), проверьте логи и убедитесь что миграции прошли успешно.
Port уже занят
Измените порт в .env или остановите конфликтующий сервис.