Files
ChatBot/DOCKER_README.md
Leonid Pershin 0e5c418a0e
All checks were successful
SonarQube / Build and analyze (push) Successful in 2m57s
fixes
2025-10-22 03:28:48 +03:00

5.3 KiB
Raw Permalink Blame History

Docker Deployment Guide

Структура файлов

ChatBot/
├── ChatBot/
│   ├── Dockerfile          # Dockerfile для сборки приложения
│   └── .dockerignore       # Исключения для Docker build
├── docker-compose.yml      # Композиция для локального запуска
├── .env.example           # Пример переменных окружения
└── .gitea/workflows/
    └── deploy.yml         # CI/CD pipeline для автоматического развертывания

Локальный запуск с Docker Compose

1. Подготовка

Скопируйте .env.example в .env и заполните необходимые значения:

cp .env.example .env

Отредактируйте .env:

TELEGRAM_BOT_TOKEN=your_actual_bot_token
OLLAMA_URL=https://your-ollama-instance/
OLLAMA_DEFAULT_MODEL=gemma3:4b

2. Запуск

# Запуск всех сервисов (PostgreSQL + ChatBot)
docker-compose up -d

# Просмотр логов
docker-compose logs -f chatbot

# Остановка
docker-compose down

# Остановка с удалением volumes
docker-compose down -v

3. Проверка статуса

# Статус контейнеров
docker-compose ps

# Логи приложения
docker-compose logs chatbot

# Логи базы данных
docker-compose logs postgres

Ручная сборка и запуск

Сборка образа

cd ChatBot
docker build -t chatbot:latest .

Запуск контейнера

docker run -d \
  --name chatbot-app \
  -e DB_HOST=your_db_host \
  -e DB_PORT=5432 \
  -e DB_NAME=chatbot \
  -e DB_USER=postgres \
  -e DB_PASSWORD=your_password \
  -e TELEGRAM_BOT_TOKEN=your_token \
  -e OLLAMA_URL=https://your-ollama/ \
  -e OLLAMA_DEFAULT_MODEL=gemma3:4b \
  chatbot:latest

CI/CD Pipeline

Настройка секретов в Gitea

Для работы CI/CD pipeline необходимо настроить следующие секреты в Gitea (Settings → Secrets):

Секрет Описание Пример
CHATBOT_DB_HOST Хост базы данных postgres или your-db-host
CHATBOT_DB_PORT Порт базы данных 5432
CHATBOT_DB_NAME Имя базы данных chatbot
CHATBOT_DB_USER Пользователь БД postgres
CHATBOT_DB_PASSWORD Пароль БД your_secure_password
CHATBOT_TELEGRAM_BOT_TOKEN Токен Telegram бота 123456:ABC-DEF...
CHATBOT_OLLAMA_URL URL Ollama API https://ai.api.home/
CHATBOT_OLLAMA_DEFAULT_MODEL Модель по умолчанию gemma3:4b

Workflow триггеры

Pipeline запускается автоматически при:

  • Push в ветки master или develop
  • Создании Pull Request в ветку master

Этапы pipeline

  1. Build Docker Image - сборка Docker образа
  2. Stop existing container - остановка существующего тестового контейнера
  3. Run test container - запуск нового контейнера с секретами
  4. Health check - проверка работоспособности приложения
  5. Cleanup - очистка старых образов

Мониторинг deployment

# Просмотр логов контейнера
docker logs chatbot-test -f

# Проверка статуса
docker ps | grep chatbot-test

# Health check
docker exec chatbot-test dotnet ChatBot.dll --health-check

Troubleshooting

Контейнер не запускается

# Проверьте логи
docker logs chatbot-app

# Проверьте переменные окружения
docker inspect chatbot-app | grep -A 20 Env

Проблемы с подключением к БД

# Проверьте доступность PostgreSQL
docker exec chatbot-postgres pg_isready

# Проверьте сетевое подключение
docker network inspect chatbot-network

Очистка

# Удалить все остановленные контейнеры
docker container prune

# Удалить неиспользуемые образы
docker image prune -a

# Удалить неиспользуемые volumes
docker volume prune

Production Deployment

Для production рекомендуется:

  1. Использовать Docker registry (например, GitHub Container Registry)
  2. Настроить мониторинг (Prometheus + Grafana)
  3. Использовать orchestration (Docker Swarm или Kubernetes)
  4. Настроить backup базы данных
  5. Использовать secrets management (Docker Secrets, Vault)
  6. Настроить reverse proxy (Nginx, Traefik)

Пример с Docker Swarm

# Инициализация swarm
docker swarm init

# Создание секретов
echo "your_token" | docker secret create telegram_token -
echo "your_password" | docker secret create db_password -

# Deploy stack
docker stack deploy -c docker-compose.yml chatbot