This commit is contained in:
2025-11-08 15:59:45 +06:00
parent 4779c4bca4
commit 63876a393c
20 changed files with 1339 additions and 99 deletions

View File

@@ -0,0 +1,397 @@
# 🐳 LCG с Ollama Server - Docker/Podman контейнер
Этот образ содержит Linux Command GPT (LCG) и Ollama сервер, работающие вместе в одном контейнере.
Поддерживается запуск через Docker и Podman.
## 📋 Описание
Контейнер автоматически запускает:
1. **Ollama сервер** (v0.9.5) на порту 11434
2. **LCG веб-сервер** на порту 8080
Ollama используется как провайдер LLM для генерации Linux команд.
## 🚀 Быстрый старт
### Сборка образа
#### Docker
```bash
# Из корня проекта
docker build -f Dockerfiles/OllamaServer/Dockerfile -t lcg-ollama:latest .
```
#### Podman
```bash
# Из корня проекта
podman build -f Dockerfiles/OllamaServer/Dockerfile -t lcg-ollama:latest .
```
### Запуск контейнера
#### Docker
```bash
docker run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
lcg-ollama:latest
```
#### Podman
```bash
podman run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
lcg-ollama:latest
```
### Использование docker-compose / podman-compose
#### Docker Compose
```bash
cd Dockerfiles/OllamaServer
docker-compose up -d
```
#### Podman Compose
```bash
cd Dockerfiles/OllamaServer
podman-compose -f podman-compose.yml up -d
```
Или используйте встроенную поддержку Podman:
```bash
cd Dockerfiles/OllamaServer
podman play kube podman-compose.yml
```
## 🌐 Доступ к сервисам
После запуска контейнера доступны:
- **LCG веб-интерфейс**: http://localhost:8080
- **Ollama API**: http://localhost:11434
## ⚙️ Переменные окружения
### Настройки LCG
| Переменная | Значение по умолчанию | Описание |
|------------|----------------------|----------|
| `LCG_PROVIDER` | `ollama` | Тип провайдера |
| `LCG_HOST` | `http://127.0.0.1:11434/` | URL Ollama API |
| `LCG_MODEL` | `codegeex4` | Модель для использования |
| `LCG_SERVER_HOST` | `0.0.0.0` | Хост LCG сервера |
| `LCG_SERVER_PORT` | `8080` | Порт LCG сервера |
| `LCG_SERVER_ALLOW_HTTP` | `true` | Разрешить HTTP |
| `LCG_RESULT_FOLDER` | `/app/data/results` | Папка для результатов |
| `LCG_PROMPT_FOLDER` | `/app/data/prompts` | Папка для промптов |
| `LCG_CONFIG_FOLDER` | `/app/data/config` | Папка для конфигурации |
### Настройки Ollama
| Переменная | Значение по умолчанию | Описание |
|------------|----------------------|----------|
| `OLLAMA_HOST` | `127.0.0.1` | Хост Ollama сервера |
| `OLLAMA_PORT` | `11434` | Порт Ollama сервера |
### Безопасность
| Переменная | Значение по умолчанию | Описание |
|------------|----------------------|----------|
| `LCG_SERVER_REQUIRE_AUTH` | `false` | Требовать аутентификацию |
| `LCG_SERVER_PASSWORD` | `admin#123456` | Пароль для аутентификации |
## 📦 Volumes
Рекомендуется монтировать volumes для персистентного хранения данных:
```bash
docker run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
-v ollama-data:/home/ollama/.ollama \
-v lcg-results:/app/data/results \
-v lcg-prompts:/app/data/prompts \
-v lcg-config:/app/data/config \
lcg-ollama:latest
```
### Volumes описание
- `ollama-data`: Модели и данные Ollama
- `lcg-results`: Результаты генерации команд
- `lcg-prompts`: Системные промпты
- `lcg-config`: Конфигурация LCG
## 🔧 Примеры использования
### Запуск с кастомной моделью
```bash
docker run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
-e LCG_MODEL=llama3:8b \
lcg-ollama:latest
```
### Запуск с аутентификацией
```bash
docker run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
-e LCG_SERVER_REQUIRE_AUTH=true \
-e LCG_SERVER_PASSWORD=my_secure_password \
lcg-ollama:latest
```
### Запуск с кастомным портом
```bash
docker run -d \
--name lcg-ollama \
-p 9000:9000 \
-p 11434:11434 \
-e LCG_SERVER_PORT=9000 \
lcg-ollama:latest
```
## 📥 Загрузка моделей Ollama
После запуска контейнера можно загрузить модели:
```bash
# Подключиться к контейнеру
docker exec -it lcg-ollama sh
# Загрузить модель
ollama pull codegeex4
ollama pull llama3:8b
ollama pull qwen2.5:7b
```
Или извне контейнера:
```bash
# Убедитесь, что Ollama доступен извне (OLLAMA_HOST=0.0.0.0)
docker exec lcg-ollama ollama pull codegeex4
```
## 🔍 Проверка работоспособности
### Проверка Ollama
```bash
# Проверка health
curl http://localhost:11434/api/tags
# Список моделей
curl http://localhost:11434/api/tags | jq '.models'
```
### Проверка LCG
```bash
# Проверка веб-интерфейса
curl http://localhost:8080/
# Проверка через API
curl -X POST http://localhost:8080/api/execute \
-H "Content-Type: application/json" \
-d '{"prompt": "создать директорию test"}'
```
## 🐧 Podman специфичные инструкции
### Запуск с Podman
Podman работает аналогично Docker, но есть несколько отличий:
#### Создание сетей (если нужно)
```bash
podman network create lcg-network
```
#### Запуск с сетью
```bash
podman run -d \
--name lcg-ollama \
--network lcg-network \
-p 8080:8080 \
-p 11434:11434 \
lcg-ollama:latest
```
#### Запуск в rootless режиме
Podman по умолчанию работает в rootless режиме, что повышает безопасность:
```bash
# Не требует sudo
podman run -d \
--name lcg-ollama \
-p 8080:8080 \
-p 11434:11434 \
lcg-ollama:latest
```
#### Использование systemd для автозапуска
Создайте systemd unit файл:
```bash
# Генерируем unit файл
podman generate systemd --name lcg-ollama --files
# Копируем в systemd
sudo cp container-lcg-ollama.service /etc/systemd/system/
# Включаем автозапуск
sudo systemctl enable container-lcg-ollama.service
sudo systemctl start container-lcg-ollama.service
```
#### Проверка статуса
```bash
# Статус контейнера
podman ps
# Логи
podman logs lcg-ollama
# Логи в реальном времени
podman logs -f lcg-ollama
```
## 🐛 Отладка
### Просмотр логов
#### Docker
```bash
# Логи контейнера
docker logs lcg-ollama
# Логи в реальном времени
docker logs -f lcg-ollama
```
#### Podman
```bash
# Логи контейнера
podman logs lcg-ollama
# Логи в реальном времени
podman logs -f lcg-ollama
```
### Подключение к контейнеру
#### Docker
```bash
docker exec -it lcg-ollama sh
```
#### Podman
```bash
podman exec -it lcg-ollama sh
```
### Проверка процессов
#### Docker
```bash
docker exec lcg-ollama ps aux
```
#### Podman
```bash
podman exec lcg-ollama ps aux
```
## 🔒 Безопасность
### Рекомендации для продакшена
1. **Используйте аутентификацию**:
```bash
-e LCG_SERVER_REQUIRE_AUTH=true
-e LCG_SERVER_PASSWORD=strong_password
```
2. **Ограничьте доступ к портам**:
- Используйте firewall правила
- Не экспортируйте порты на публичный интерфейс
3. **Используйте HTTPS**:
- Настройте reverse proxy (nginx, traefik)
- Используйте SSL сертификаты
4. **Ограничьте ресурсы**:
```bash
docker run -d \
--name lcg-ollama \
--memory="4g" \
--cpus="2" \
lcg-ollama:latest
```
## 📊 Мониторинг
### Healthcheck
Контейнер включает healthcheck, который проверяет доступность LCG сервера:
```bash
docker inspect lcg-ollama | jq '.[0].State.Health'
```
### Метрики
LCG предоставляет Prometheus метрики на `/metrics` endpoint (если включено).
## 🚀 Production Deployment
### С docker-compose
```bash
cd Dockerfiles/OllamaServer
docker-compose up -d
```
### С Kubernetes
Используйте манифесты из папки `deploy/` или `kustomize/`.
## 📝 Примечания
- Ollama версия: 0.9.5
- LCG версия: см. VERSION.txt
- Минимальные требования: 2GB RAM, 2 CPU cores
- Рекомендуется: 4GB+ RAM для больших моделей
## 🔗 Полезные ссылки
- [Ollama документация](https://github.com/ollama/ollama)
- [LCG документация](../../docs/README.md)
- [LCG API Guide](../../docs/API_GUIDE.md)
## ❓ Поддержка
При возникновении проблем:
1. Проверьте логи: `docker logs lcg-ollama`
2. Проверьте переменные окружения
3. Убедитесь, что порты не заняты
4. Проверьте, что модели загружены в Ollama