5.3 KiB
5.3 KiB
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
- Build Docker Image - сборка Docker образа
- Stop existing container - остановка существующего тестового контейнера
- Run test container - запуск нового контейнера с секретами
- Health check - проверка работоспособности приложения
- 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 рекомендуется:
- Использовать Docker registry (например, GitHub Container Registry)
- Настроить мониторинг (Prometheus + Grafana)
- Использовать orchestration (Docker Swarm или Kubernetes)
- Настроить backup базы данных
- Использовать secrets management (Docker Secrets, Vault)
- Настроить 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