# Universal Docker & Git Management Project

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Docker](https://img.shields.io/badge/Docker-Universal-blue.svg)](https://www.docker.com/)
[![Make](https://img.shields.io/badge/Make-Universal-green.svg)](https://www.gnu.org/software/make/)

**Автор:** Сергей Антропов  
**Версия:** 2.0  
**Сайт:** https://devops.org.ru

## 📋 Описание проекта

Универсальный проект для автоматизации работы с Docker-образами и Git-репозиториями. Включает в себя:

- **Универсальный Dockerfile** на базе Ubuntu 22.04 с предустановленными утилитами
- **Мощный Makefile** с полным набором команд для Docker и Git
- **Подробную документацию** на русском языке
- **Готовые сценарии** для оффлайн-деплоя

## 🚀 Быстрый старт

### Предварительные требования

- Docker (версия 20.10+)
- Make (GNU Make 3.81+)
- Git (версия 2.0+)

### Установка

1. **Клонируйте репозиторий:**
```bash
git clone <repository-url>
cd Dockerfile
```

2. **Проверьте Makefile:**
```bash
make help
```

3. **Проверьте Docker:**
```bash
make docker print-config
```

## 📚 Документация

### 📦 [Установка зависимостей](docs/installation.md)
Подробные инструкции по установке Docker, Make и Git на различных операционных системах:
- Linux (Ubuntu/Debian, CentOS/RHEL/Fedora)
- macOS (Homebrew, Docker Desktop)
- Windows (WSL2, Git Bash)
- Устранение проблем установки

### 🐳 [Dockerfile](docs/dockerfile.md)
Описание универсального Dockerfile и способы его использования:
- Особенности и структура
- Расширение и настройка
- Оптимизация и безопасность
- Примеры использования

### ⚙️ [Makefile](docs/makefile.md)
Полное описание команд и переменных Makefile:
- Основные команды Docker и Git
- Подробное описание всех переменных
- Настройка и конфигурация
- Служебные функции

### 📖 [Примеры использования](docs/examples.md)
Практические примеры и сценарии использования:
- Базовая сборка и публикация
- Мультиплатформенная сборка
- Оффлайн деплой
- Работа с аргументами сборки
- Отладка и мониторинг

### 💡 [Лучшие практики](docs/best-practices.md)
Рекомендации по эффективному использованию:
- Управление версиями
- Безопасность
- Оптимизация сборки
- Мониторинг и логирование
- Организация проекта

### 🐛 [Решение проблем](docs/troubleshooting.md)
Диагностика и решение частых проблем:
- Частые ошибки и их решения
- Проблемы с памятью, сетью, правами доступа
- Диагностические команды
- Получение помощи

### ❓ [FAQ](docs/faq.md)
Ответы на часто задаваемые вопросы:
- Общие вопросы
- Вопросы по Docker, Makefile, Git
- Вопросы по производительности и безопасности
- Вопросы по отладке и конфигурации

## 🎯 Основные возможности

### Docker команды
- `make docker build` - сборка образов
- `make docker push` - публикация в registry
- `make docker save/load` - работа с архивами
- `make docker check` - проверка образов

### Git команды
- `make git status` - статус репозитория
- `make git commit` - создание коммитов
- `make git push` - отправка изменений
- `make git sync` - полная синхронизация

### Дополнительные возможности
- Мультиплатформенная сборка (buildx)
- Оффлайн деплой с архивами
- Подробное логирование
- Гибкая конфигурация

## 📁 Структура проекта

```
Dockerfile/
├── dockerfile          # Универсальный Dockerfile
├── makefile           # Makefile с командами Docker и Git
├── README.md          # Главная документация
├── docs/              # Подробная документация
│   ├── installation.md
│   ├── dockerfile.md
│   ├── makefile.md
│   ├── examples.md
│   ├── best-practices.md
│   ├── troubleshooting.md
│   └── faq.md
├── logs/              # Директория логов (создается автоматически)
├── images/            # Директория архивов образов
└── .offline/          # Временные файлы для оффлайн операций
```

## 🚀 Быстрые команды

### Основные операции
```bash
# Сборка образа
make docker build IMAGE=myapp TAG=v1.0.0

# Публикация образа
make docker push IMAGE=myapp TAG=v1.0.0

# Проверка образа
make docker check RUN_CMD="lsb_release -a"

# Сохранение в архив
make docker save SRC_IMAGE=myapp:latest COMPRESS=1
```

### Git операции
```bash
# Статус репозитория
make git status

# Коммит и push
make git push GIT_MSG="Обновление"

# Полная синхронизация
make git sync
```

## 🤝 Вклад в проект

1. Форкните репозиторий
2. Создайте ветку для новой функции (`git checkout -b feature/amazing-feature`)
3. Зафиксируйте изменения (`git commit -m 'Add amazing feature'`)
4. Отправьте в ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request

## 📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл [LICENSE](LICENSE) для подробностей.

## 👨‍💻 Автор

**Сергей Антропов**
- Сайт: https://devops.org.ru
- Email: devops@devops.org.ru

## 🙏 Благодарности

- Сообществу Docker за отличные инструменты
- GNU Make за мощную систему сборки
- Ubuntu за стабильную базовую платформу

## 📞 Поддержка

Если у вас есть вопросы или предложения:

1. Создайте [Issue](https://github.com/your-repo/issues)
2. Напишите на email: devops@devops.org.ru
3. Посетите сайт: https://devops.org.ru

---

**⭐ Если проект был полезен, поставьте звезду!**