This commit is contained in:
189
DOCKER_README.md
Normal file
189
DOCKER_README.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# 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` и заполните необходимые значения:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Отредактируйте `.env`:
|
||||
```env
|
||||
TELEGRAM_BOT_TOKEN=your_actual_bot_token
|
||||
OLLAMA_URL=https://your-ollama-instance/
|
||||
OLLAMA_DEFAULT_MODEL=gemma3:4b
|
||||
```
|
||||
|
||||
### 2. Запуск
|
||||
|
||||
```bash
|
||||
# Запуск всех сервисов (PostgreSQL + ChatBot)
|
||||
docker-compose up -d
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f chatbot
|
||||
|
||||
# Остановка
|
||||
docker-compose down
|
||||
|
||||
# Остановка с удалением volumes
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
### 3. Проверка статуса
|
||||
|
||||
```bash
|
||||
# Статус контейнеров
|
||||
docker-compose ps
|
||||
|
||||
# Логи приложения
|
||||
docker-compose logs chatbot
|
||||
|
||||
# Логи базы данных
|
||||
docker-compose logs postgres
|
||||
```
|
||||
|
||||
## Ручная сборка и запуск
|
||||
|
||||
### Сборка образа
|
||||
|
||||
```bash
|
||||
cd ChatBot
|
||||
docker build -t chatbot:latest .
|
||||
```
|
||||
|
||||
### Запуск контейнера
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# Просмотр логов контейнера
|
||||
docker logs chatbot-test -f
|
||||
|
||||
# Проверка статуса
|
||||
docker ps | grep chatbot-test
|
||||
|
||||
# Health check
|
||||
docker exec chatbot-test dotnet ChatBot.dll --health-check
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Контейнер не запускается
|
||||
|
||||
```bash
|
||||
# Проверьте логи
|
||||
docker logs chatbot-app
|
||||
|
||||
# Проверьте переменные окружения
|
||||
docker inspect chatbot-app | grep -A 20 Env
|
||||
```
|
||||
|
||||
### Проблемы с подключением к БД
|
||||
|
||||
```bash
|
||||
# Проверьте доступность PostgreSQL
|
||||
docker exec chatbot-postgres pg_isready
|
||||
|
||||
# Проверьте сетевое подключение
|
||||
docker network inspect chatbot-network
|
||||
```
|
||||
|
||||
### Очистка
|
||||
|
||||
```bash
|
||||
# Удалить все остановленные контейнеры
|
||||
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
|
||||
|
||||
```bash
|
||||
# Инициализация 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
|
||||
```
|
||||
Reference in New Issue
Block a user