mirror of
https://github.com/Direct-Dev-Ru/go-lcg.git
synced 2025-11-16 09:39:56 +00:00
398 lines
9.7 KiB
Markdown
398 lines
9.7 KiB
Markdown
# 🐳 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
|
||
|