🔧 Restructure scripts and add CLI tool

 New features:
- Add CLI tool for container command execution
- Reorganize all scripts into bin/ directory
- Create convenient wrappers in project root
- Add local changes auto-commit functionality
- Enhanced backup repository management

📁 Structure changes:
- Move all scripts to bin/ directory
- Create wrapper scripts in root (cli, update, start, stop, logs)
- Add setup-backup.sh for backup repository management
- Update documentation with new CLI examples

🛠️ CLI capabilities:
- Django commands (shell, migrate, collectstatic, etc.)
- System commands (bash, logs, status)
- Container management (restart, status)
- Interactive and non-interactive modes

📚 Documentation:
- Updated SCRIPTS_README.md with CLI examples
- Added troubleshooting section
- Comprehensive usage examples
This commit is contained in:
2025-11-25 06:51:52 +09:00
parent bd028d09e6
commit 8f1e0459fc
22 changed files with 618 additions and 64 deletions

View File

@@ -2,9 +2,28 @@
Этот набор скриптов предназначен для автоматизации процессов разработки и развертывания проекта SmartSolTech.
## Структура проекта
```
smartsoltech.kr/
├── cli # CLI для работы с контейнером веб-приложения
├── update # Полное обновление проекта
├── start # Быстрый запуск сервисов
├── stop # Остановка сервисов
├── logs # Просмотр логов
└── bin/ # Папка со всеми служебными скриптами
├── cli.sh # CLI скрипт (основной)
├── update.sh # Скрипт обновления (основной)
├── start.sh # Скрипт запуска
├── stop.sh # Скрипт остановки
├── logs.sh # Скрипт логов
├── demo.sh # Демонстрация возможностей
└── setup-backup.sh # Настройка backup репозитория
```
## Доступные скрипты
### 🚀 `./update.sh` - Полное обновление проекта
### 🚀 `./update` - Полное обновление проекта
Выполняет полный цикл обновления:
- Создание бэкапа в удаленном репозитории
- Обновление кода из Git (origin или backup)
@@ -17,32 +36,72 @@
**Использование:**
```bash
./update.sh # Обновление из origin (по умолчанию)
./update.sh origin # Обновление из origin репозитория
./update.sh backup # Обновление из backup репозитория
./update.sh origin backup # Обновление из origin с бэкапом в backup
./update.sh backup origin # Обновление из backup с бэкапом в origin
./update.sh --help # Показать справку
./update.sh --logs # Показать логи без обновления
./update.sh --status # Показать статус сервисов
./update # Обновление из origin (по умолчанию)
./update origin # Обновление из origin репозитория
./update backup # Обновление из backup репозитория
./update origin backup # Обновление из origin с бэкапом в backup
./update backup origin # Обновление из backup с бэкапом в origin
./update --help # Показать справку
./update --logs # Показать логи без обновления
./update --status # Показать статус сервисов
```
**Примеры использования удаленных репозиториев:**
```bash
# Стандартное обновление из основного репозитория
./update.sh
./update
# Обновление из резервного репозитория (если основной недоступен)
./update.sh backup
./update backup
# Обновление из основного репозитория с созданием бэкапа в резервном
./update.sh origin backup
./update origin backup
# Переключение на резервный сервер с бэкапом в основной
./update.sh backup origin
./update backup origin
```
### ▶️ `./start.sh` - Быстрый запуск
### 💻 `./cli` - CLI для работы с контейнером веб-приложения
Интерфейс командной строки для выполнения команд внутри контейнера Django:
- Django команды (shell, migrate, collectstatic и др.)
- Системные команды (bash, ps, logs)
- Управление контейнером (restart, status)
**Использование:**
```bash
./cli shell # Django shell
./cli bash # Bash в контейнере
./cli migrate # Выполнить миграции
./cli makemigrations # Создать миграции
./cli createsuperuser # Создать суперпользователя
./cli collectstatic # Собрать статические файлы
./cli manage <command> # Произвольная Django команда
./cli exec <command> # Произвольная системная команда
./cli logs [количество_строк] # Логи приложения
./cli status # Статус контейнеров
./cli restart # Перезапуск веб-контейнера
./cli --help # Показать справку
```
**Примеры использования CLI:**
```bash
# Django разработка
./cli shell # Интерактивная оболочка Django
./cli manage showmigrations # Показать статус миграций
./cli dbshell # Подключиться к базе данных
# Системное администрирование
./cli bash # Зайти в контейнер
./cli exec cat /app/requirements.txt # Посмотреть зависимости
./cli ps # Процессы в контейнере
./cli logs 100 # Последние 100 строк логов
# Управление
./cli status # Статус всех сервисов
./cli restart # Перезапуск веб-сервера
```
### ▶️ `./start` - Быстрый запуск
Быстро запускает все сервисы проекта:
- Запуск Docker контейнеров
- Проверка статуса сервисов
@@ -50,10 +109,10 @@
**Использование:**
```bash
./start.sh
./start
```
### ⏹️ `./stop.sh` - Остановка сервисов
### ⏹️ `./stop` - Остановка сервисов
Останавливает сервисы с различными опциями:
- Простая остановка контейнеров
- Остановка с удалением контейнеров и волюмов
@@ -61,13 +120,13 @@
**Использование:**
```bash
./stop.sh # Простая остановка
./stop.sh --remove # Остановка + удаление контейнеров и волюмов
./stop.sh --clean # Полная очистка (контейнеры + образы + волюмы)
./stop.sh --help # Показать справку
./stop # Простая остановка
./stop --remove # Остановка + удаление контейнеров и волюмов
./stop --clean # Полная очистка (контейнеры + образы + волюмы)
./stop --help # Показать справку
```
### 📋 `./logs.sh` - Просмотр логов
### 📋 `./logs` - Просмотр логов
Показывает логи сервисов в реальном времени:
- Все логи или конкретного сервиса
- Последние N строк логов
@@ -75,14 +134,31 @@
**Использование:**
```bash
./logs.sh # Все логи в реальном времени
./logs.sh web # Логи только веб-сервера
./logs.sh db # Логи базы данных
./logs.sh pgadmin # Логи PgAdmin
./logs.sh --tail 50 # Последние 50 строк
./logs.sh --help # Показать справку
./logs # Все логи в реальном времени
./logs web # Логи только веб-сервера
./logs db # Логи базы данных
./logs pgadmin # Логи PgAdmin
./logs --tail 50 # Последние 50 строк
./logs --help # Показать справку
```
## Служебные скрипты в папке bin/
### 🛠️ `./bin/setup-backup.sh` - Настройка backup репозитория
Помогает настроить дополнительный удаленный репозиторий для резервного копирования.
**Использование:**
```bash
./bin/setup-backup.sh # Интерактивная настройка
./bin/setup-backup.sh <URL> # Добавить backup репозиторий
./bin/setup-backup.sh <URL> <name> # Добавить с именем
./bin/setup-backup.sh --remove <name> # Удалить backup репозиторий
./bin/setup-backup.sh --list # Показать все репозитории
```
### 🎯 `./bin/demo.sh` - Демонстрация возможностей
Показывает примеры использования всех скриптов и текущий статус проекта.
## Доступные сервисы
После запуска будут доступны:
@@ -110,29 +186,57 @@
### Ежедневное обновление
```bash
# Полное обновление с проверкой
./update.sh
./update
# Если что-то пошло не так - смотрим логи
./logs.sh --tail 100
./logs --tail 100
# Заходим в контейнер для диагностики
./cli bash
```
### Разработка
```bash
# Запуск для разработки
./start.sh
./start
# Работа с Django
./cli shell # Django shell для тестирования
./cli makemigrations # Создание миграций
./cli migrate # Применение миграций
# Просмотр логов во время разработки
./logs.sh web
./logs web
# Перезапуск после изменений
./cli restart
# Остановка после работы
./stop.sh
./stop
```
### Администрирование
```bash
# Создание суперпользователя
./cli createsuperuser
# Сбор статических файлов
./cli collectstatic
# Проверка состояния
./cli status
./cli logs 50
# Управление контейнером
./cli exec ps aux # Процессы в контейнере
./cli exec df -h # Дисковое пространство
```
### Полная перезагрузка
```bash
# Полная очистка и пересборка
./stop.sh --clean
./update.sh
./stop --clean
./update
```
## Troubleshooting
@@ -140,21 +244,36 @@
### Проблемы с контейнерами
```bash
# Проверить статус
./logs.sh --help
docker-compose ps
./cli status
./logs --help
# Перезапустить проблемный сервис
docker-compose restart web
./cli restart
```
### Проблемы с базой данных
```bash
# Проверить логи БД
./logs.sh db
./logs db
# Зайти в базу данных
./cli dbshell
# Принудительная пересборка
./stop.sh --remove
./update.sh
./stop --remove
./update
```
### Проблемы с Django
```bash
# Django shell для диагностики
./cli shell
# Проверка миграций
./cli manage showmigrations
# Проверка конфигурации
./cli check
```
### Проблемы с Git