232 lines
8.9 KiB
Markdown
232 lines
8.9 KiB
Markdown
# 🚀 Экспорт шаблона приложения в GitHub
|
||
|
||
## Цель
|
||
Экспортировать все образы и тома как файлы в GitHub репозиторий для создания полного шаблона приложения.
|
||
|
||
## 📋 Команды для экспорта
|
||
|
||
### 1. Создать папки для данных
|
||
```bash
|
||
mkdir -p ./docker-data/images
|
||
mkdir -p ./docker-data/volumes
|
||
```
|
||
|
||
### 2. Экспортировать образы в файлы
|
||
```bash
|
||
# Backend образ
|
||
docker save digital_legal_entitydle-backend:latest -o ./docker-data/images/backend.tar
|
||
|
||
# Frontend образ
|
||
docker save digital_legal_entitydle-frontend:latest -o ./docker-data/images/frontend.tar
|
||
|
||
# Vector Search образ
|
||
docker save digital_legal_entitydle-vector-search:latest -o ./docker-data/images/vector-search.tar
|
||
|
||
# Ollama образ
|
||
docker save digital_legal_entitydle-ollama:latest -o ./docker-data/images/ollama.tar
|
||
|
||
# WebSSH Agent образ
|
||
docker save digital_legal_entitydle-webssh-agent:latest -o ./docker-data/images/webssh-agent.tar
|
||
```
|
||
|
||
### 3. Экспортировать тома в файлы
|
||
```bash
|
||
# PostgreSQL данные
|
||
docker run --rm -v digital_legal_entitydle_postgres_data:/source -v $(pwd)/docker-data/volumes:/backup alpine tar czf /backup/postgres_data.tar.gz -C /source .
|
||
|
||
# Ollama данные
|
||
docker run --rm -v digital_legal_entitydle_ollama_data:/source -v $(pwd)/docker-data/volumes:/backup alpine tar czf /backup/ollama_data.tar.gz -C /source .
|
||
|
||
# Vector Search данные
|
||
docker run --rm -v digital_legal_entitydle_vector_search_data:/source -v $(pwd)/docker-data/volumes:/backup alpine tar czf /backup/vector_search_data.tar.gz -C /source .
|
||
|
||
# Backend node_modules
|
||
docker run --rm -v digital_legal_entitydle_backend_node_modules:/source -v $(pwd)/docker-data/volumes:/backup alpine tar czf /backup/backend_node_modules.tar.gz -C /source .
|
||
|
||
# Frontend node_modules
|
||
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/source -v $(pwd)/docker-data/volumes:/backup alpine tar czf /backup/frontend_node_modules.tar.gz -C /source .
|
||
```
|
||
|
||
### 4. Создать архив для GitHub Release
|
||
```bash
|
||
# Создать сжатый архив
|
||
tar -czf dle-template.tar.gz docker-data/
|
||
|
||
# Проверить размер
|
||
ls -lh dle-template.tar.gz
|
||
# Ожидаемый размер: ~5.3GB
|
||
```
|
||
|
||
### 5. Создать GitHub Release
|
||
```bash
|
||
# Создать тег версии
|
||
git tag v1.0.0
|
||
git push origin v1.0.0
|
||
|
||
# GitHub автоматически создаст Release
|
||
# Затем вручную загрузить dle-template.tar.gz в Release
|
||
```
|
||
|
||
## 📊 Результат
|
||
|
||
После выполнения всех команд:
|
||
- ✅ **GitHub Release** с архивом `dle-template.tar.gz` (5.3GB)
|
||
- ✅ **Все образы** как файлы (.tar) внутри архива
|
||
- ✅ **Все тома** как файлы (.tar.gz) внутри архива
|
||
- ✅ **Полный шаблон** приложения готов к скачиванию
|
||
|
||
## 🚀 Использование шаблона
|
||
|
||
### Для пользователей:
|
||
|
||
#### Автоматическая установка (рекомендуется):
|
||
```bash
|
||
# Скачать и запустить скрипт установки
|
||
curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup-template.sh | bash
|
||
```
|
||
|
||
#### Ручная установка:
|
||
```bash
|
||
# 1. Клонировать репозиторий
|
||
git clone https://github.com/VC-HB3-Accelerator/DLE.git
|
||
cd DLE
|
||
|
||
# 2. Скачать архив из GitHub Release
|
||
# Перейти на страницу Release и скачать dle-template.tar.gz (5.3GB)
|
||
|
||
# 3. Распаковать архив
|
||
tar -xzf dle-template.tar.gz
|
||
|
||
# 4. Импортировать образы
|
||
docker load -i docker-data/images/backend.tar
|
||
docker load -i docker-data/images/frontend.tar
|
||
docker load -i docker-data/images/vector-search.tar
|
||
docker load -i docker-data/images/ollama.tar
|
||
docker load -i docker-data/images/webssh-agent.tar
|
||
|
||
# 5. Создать и импортировать тома
|
||
docker volume create digital_legal_entitydle_postgres_data
|
||
docker volume create digital_legal_entitydle_ollama_data
|
||
docker volume create digital_legal_entitydle_vector_search_data
|
||
docker volume create digital_legal_entitydle_backend_node_modules
|
||
docker volume create digital_legal_entitydle_frontend_node_modules
|
||
|
||
docker run --rm -v digital_legal_entitydle_postgres_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/postgres_data.tar.gz -C /target
|
||
docker run --rm -v digital_legal_entitydle_ollama_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/ollama_data.tar.gz -C /target
|
||
docker run --rm -v digital_legal_entitydle_vector_search_data:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/vector_search_data.tar.gz -C /target
|
||
docker run --rm -v digital_legal_entitydle_backend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/backend_node_modules.tar.gz -C /target
|
||
docker run --rm -v digital_legal_entitydle_frontend_node_modules:/target -v $(pwd)/docker-data/volumes:/backup alpine tar xzf /backup/frontend_node_modules.tar.gz -C /target
|
||
|
||
# 6. Запустить приложение
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 📊 Точные размеры экспорта
|
||
|
||
### Образы (5 файлов .tar):
|
||
- `backend.tar` - **36MB**
|
||
- `frontend.tar` - **45MB**
|
||
- `vector-search.tar` - **40MB**
|
||
- `ollama.tar` - **46MB**
|
||
- `webssh-agent.tar` - **47MB**
|
||
- **Итого образы**: ~215MB
|
||
|
||
### Volumes (5 файлов .tar.gz):
|
||
- `postgres_data.tar.gz` - **28MB**
|
||
- `ollama_data.tar.gz` - **5.2GB** (самый большой!)
|
||
- `vector_search_data.tar.gz` - **87 байт** (пустой)
|
||
- `backend_node_modules.tar.gz` - **127MB**
|
||
- `frontend_node_modules.tar.gz` - **40MB**
|
||
- **Итого volumes**: ~5.4GB
|
||
|
||
### **ОБЩИЙ РАЗМЕР**: ~5.6GB
|
||
|
||
## 🚨 Проблема с GitHub
|
||
|
||
**GitHub имеет лимиты:**
|
||
- Максимум 100MB на файл
|
||
- Максимум 1GB на репозиторий (бесплатно)
|
||
- Наш архив 5.3GB превышает лимиты!
|
||
|
||
## 💡 Варианты решения для хранения архива
|
||
|
||
### 1. GitHub Releases (рекомендуется) ✅
|
||
```bash
|
||
# Создать архив
|
||
tar -czf dle-template.tar.gz docker-data/
|
||
|
||
# Создать тег и Release
|
||
git tag v1.0.0
|
||
git push origin v1.0.0
|
||
|
||
# Загрузить dle-template.tar.gz в GitHub Release
|
||
# Лимит: 2GB на файл, 10GB на релиз
|
||
```
|
||
**Плюсы**:
|
||
- Простота настройки
|
||
- Нет лимитов размера (до 2GB на файл)
|
||
- Версионирование релизов
|
||
- Отдельно от кода репозитория
|
||
|
||
**Минусы**:
|
||
- Пользователи скачивают архив отдельно
|
||
- Нужно обновлять инструкции
|
||
|
||
### 2. Git LFS (Large File Storage)
|
||
```bash
|
||
# Настроить LFS
|
||
git lfs track "*.tar" "*.tar.gz"
|
||
git add .gitattributes
|
||
git add docker-data/
|
||
```
|
||
**Плюсы**: Автоматическое управление большими файлами
|
||
**Минусы**: Лимит 1GB (бесплатно), нужен Git LFS
|
||
|
||
### 3. Внешние хранилища
|
||
- **Google Drive** - 15GB бесплатно
|
||
- **Dropbox** - 2GB бесплатно
|
||
- **OneDrive** - 5GB бесплатно
|
||
- **Mega** - 20GB бесплатно
|
||
|
||
### 4. Облачные хранилища
|
||
- **AWS S3** - платно, но надежно
|
||
- **Google Cloud Storage** - платно
|
||
- **Azure Blob** - платно
|
||
|
||
### 5. Разделение на части
|
||
```bash
|
||
# Разделить архив на части по 1GB
|
||
split -b 1G dle-template.tar.gz dle-template-part-
|
||
# Результат: dle-template-part-aa, dle-template-part-ab, etc.
|
||
```
|
||
|
||
## 📁 Структура после экспорта
|
||
|
||
```
|
||
docker-data/
|
||
├── images/
|
||
│ ├── backend.tar
|
||
│ ├── frontend.tar
|
||
│ ├── vector-search.tar
|
||
│ ├── ollama.tar
|
||
│ └── webssh-agent.tar
|
||
└── volumes/
|
||
├── postgres_data.tar.gz
|
||
├── ollama_data.tar.gz
|
||
├── vector_search_data.tar.gz
|
||
├── backend_node_modules.tar.gz
|
||
└── frontend_node_modules.tar.gz
|
||
```
|
||
|
||
## ✅ Готово!
|
||
|
||
После выполнения всех команд у вас будет:
|
||
- ✅ **GitHub Release** с архивом `dle-template.tar.gz` (5.3GB)
|
||
- ✅ **Полный шаблон** приложения готов к скачиванию
|
||
- ✅ **Автоматический скрипт** установки для пользователей
|
||
- ✅ **Ручные инструкции** для продвинутых пользователей
|
||
|
||
**Пользователи могут:**
|
||
1. **Автоматически**: `curl -fsSL ... | bash`
|
||
2. **Вручную**: Скачать архив из Release и следовать инструкциям
|