Переписана документация
This commit is contained in:
346
docs/examples.md
Normal file
346
docs/examples.md
Normal file
@@ -0,0 +1,346 @@
|
||||
# 📖 Примеры использования
|
||||
|
||||
## 1. Базовая сборка и публикация
|
||||
|
||||
### Простая сборка
|
||||
```bash
|
||||
# Сборка с минимальными параметрами
|
||||
make docker build IMAGE=myapp TAG=latest
|
||||
|
||||
# Сборка с кастомным registry
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=hub.cism-ms.ru/library
|
||||
|
||||
# Сборка с проверкой
|
||||
make docker build IMAGE=myapp TAG=v1.0.0
|
||||
make docker check RUN_CMD="lsb_release -a"
|
||||
```
|
||||
|
||||
### Полный цикл сборки и публикации
|
||||
```bash
|
||||
# 1. Сборка образа
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=hub.cism-ms.ru/library
|
||||
|
||||
# 2. Проверка работоспособности
|
||||
make docker check \
|
||||
RUN_CMD="curl -f http://localhost:8080/health"
|
||||
|
||||
# 3. Публикация в registry
|
||||
make docker push \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=hub.cism-ms.ru/library
|
||||
```
|
||||
|
||||
## 2. Мультиплатформенная сборка
|
||||
|
||||
### Настройка buildx
|
||||
```bash
|
||||
# Создание buildx builder
|
||||
make docker create-builder
|
||||
|
||||
# Проверка builder'а
|
||||
make docker use-builder
|
||||
|
||||
# Просмотр доступных платформ
|
||||
docker buildx inspect --bootstrap
|
||||
```
|
||||
|
||||
### Сборка для нескольких платформ
|
||||
```bash
|
||||
# Сборка для AMD64 и ARM64
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
USE_BUILDX=1 \
|
||||
PLATFORMS="linux/amd64,linux/arm64" \
|
||||
PUSH=1 \
|
||||
LOAD=0
|
||||
|
||||
# Сборка для всех популярных платформ
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
USE_BUILDX=1 \
|
||||
PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7" \
|
||||
PUSH=1
|
||||
```
|
||||
|
||||
## 3. Оффлайн деплой
|
||||
|
||||
### Сохранение образов
|
||||
```bash
|
||||
# Простое сохранение
|
||||
make docker save SRC_IMAGE=myapp:latest
|
||||
|
||||
# Сохранение с сжатием
|
||||
make docker save \
|
||||
SRC_IMAGE=myapp:v1.0.0 \
|
||||
COMPRESS=1
|
||||
|
||||
# Сохранение с разбиением на части
|
||||
make docker save \
|
||||
SRC_IMAGE=myapp:v1.0.0 \
|
||||
COMPRESS=1 \
|
||||
SPLIT_SIZE=2G
|
||||
|
||||
# Сохранение в кастомную директорию
|
||||
make docker save \
|
||||
SRC_IMAGE=myapp:v1.0.0 \
|
||||
IMAGES_DIR=/backup/containers \
|
||||
COMPRESS=1
|
||||
```
|
||||
|
||||
### Загрузка и публикация
|
||||
```bash
|
||||
# Простая загрузка
|
||||
make docker load ARCHIVE=images/myapp_v1.0.0.tar.gz
|
||||
|
||||
# Загрузка с авторизацией и публикацией
|
||||
make docker load \
|
||||
ARCHIVE=images/myapp_v1.0.0.tar.gz \
|
||||
REGISTRY=hub.cism-ms.ru/library \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
LOGIN=1 \
|
||||
PUSH_OFFLINE=1
|
||||
|
||||
# Загрузка с сохранением исходного тега
|
||||
make docker load \
|
||||
ARCHIVE=images/myapp_v1.0.0.tar.gz \
|
||||
KEEP_SRC_TAG=1 \
|
||||
LOGIN=1 \
|
||||
PUSH_OFFLINE=1
|
||||
```
|
||||
|
||||
## 4. Работа с аргументами сборки
|
||||
|
||||
### Использование BUILD_ARGS
|
||||
```bash
|
||||
# Передача переменных окружения
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
BUILD_ARGS="--build-arg VERSION=1.0.0 --build-arg NODE_ENV=production"
|
||||
|
||||
# Передача пользовательских данных
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
BUILD_ARGS="--build-arg USER_ID=1000 --build-arg GROUP_ID=1000"
|
||||
```
|
||||
|
||||
### Использование ARG_FILE
|
||||
```bash
|
||||
# Создание файла с аргументами
|
||||
cat > build.args << EOF
|
||||
VERSION=1.0.0
|
||||
BUILD_DATE=2024-01-15
|
||||
GIT_COMMIT=abc123def
|
||||
NODE_ENV=production
|
||||
USER_ID=1000
|
||||
GROUP_ID=1000
|
||||
EOF
|
||||
|
||||
# Сборка с файлом аргументов
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
ARG_FILE=build.args
|
||||
```
|
||||
|
||||
## 5. Работа с Git
|
||||
|
||||
### Базовые операции
|
||||
```bash
|
||||
# Просмотр статуса
|
||||
make git status
|
||||
|
||||
# Получение изменений
|
||||
make git pull
|
||||
|
||||
# Коммит с сообщением
|
||||
make git commit GIT_MSG="Добавлена поддержка Docker"
|
||||
|
||||
# Коммит и push
|
||||
make git push GIT_MSG="Обновлена документация"
|
||||
```
|
||||
|
||||
### Продвинутые сценарии
|
||||
```bash
|
||||
# Синхронизация с удаленным репозиторием
|
||||
make git sync
|
||||
|
||||
# Работа с разными удаленными репозиториями
|
||||
make git pull GIT_REMOTE=upstream
|
||||
make git push GIT_REMOTE=origin GIT_MSG="Синхронизация с upstream"
|
||||
```
|
||||
|
||||
## 6. Работа с разными операционными системами
|
||||
|
||||
### Linux (Ubuntu/Debian)
|
||||
```bash
|
||||
# Установка Docker
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker.io
|
||||
sudo systemctl start docker
|
||||
sudo systemctl enable docker
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Установка Make
|
||||
sudo apt-get install -y make
|
||||
|
||||
# Перезагрузка для применения изменений группы
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
### Linux (CentOS/RHEL/Fedora)
|
||||
```bash
|
||||
# Установка Docker
|
||||
sudo yum install -y docker
|
||||
# или для Fedora
|
||||
sudo dnf install -y docker
|
||||
|
||||
sudo systemctl start docker
|
||||
sudo systemctl enable docker
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
# Установка Make
|
||||
sudo yum install -y make
|
||||
# или для Fedora
|
||||
sudo dnf install -y make
|
||||
```
|
||||
|
||||
### macOS
|
||||
```bash
|
||||
# Установка через Homebrew
|
||||
brew install docker
|
||||
brew install make
|
||||
|
||||
# Или установка Docker Desktop
|
||||
# Скачайте с https://www.docker.com/products/docker-desktop
|
||||
|
||||
# Проверка установки
|
||||
docker --version
|
||||
make --version
|
||||
```
|
||||
|
||||
### Windows
|
||||
```bash
|
||||
# Через WSL2 (рекомендуется)
|
||||
wsl --install
|
||||
# Затем в WSL2:
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker.io make
|
||||
|
||||
# Или через Git Bash
|
||||
# Установите Docker Desktop и Git for Windows
|
||||
# Make поставляется с Git for Windows
|
||||
```
|
||||
|
||||
## 7. Отладка и мониторинг
|
||||
|
||||
### Просмотр конфигурации
|
||||
```bash
|
||||
# Показать все переменные
|
||||
make docker print-config
|
||||
|
||||
# Показать информацию об образе
|
||||
make docker inspect
|
||||
|
||||
# Просмотр логов сборки
|
||||
tail -f logs/build_20240115_143022.log
|
||||
```
|
||||
|
||||
### Проверка образов
|
||||
```bash
|
||||
# Проверка версии Java
|
||||
make docker check RUN_CMD="java -version"
|
||||
|
||||
# Проверка версии Node.js
|
||||
make docker check RUN_CMD="node --version"
|
||||
|
||||
# Проверка доступности сервиса
|
||||
make docker check RUN_CMD="curl -f http://localhost:8080/health"
|
||||
|
||||
# Проверка переменных окружения
|
||||
make docker check RUN_CMD="env | grep -E 'VERSION|NODE_ENV'"
|
||||
```
|
||||
|
||||
## 8. Продвинутые сценарии
|
||||
|
||||
### Сборка с кастомным Dockerfile
|
||||
```bash
|
||||
# Сборка с Dockerfile.prod
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=production \
|
||||
DOCKERFILE=Dockerfile.prod
|
||||
|
||||
# Сборка с контекстом в подпапке
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
CONTEXT=./app
|
||||
```
|
||||
|
||||
### Работа с разными registry
|
||||
```bash
|
||||
# Сборка для локального registry
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=localhost:5000
|
||||
|
||||
# Сборка для Docker Hub
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=myusername
|
||||
|
||||
# Сборка для GitLab Registry
|
||||
make docker build \
|
||||
IMAGE=myapp \
|
||||
TAG=v1.0.0 \
|
||||
REGISTRY=registry.gitlab.com/myproject
|
||||
```
|
||||
|
||||
### Управление тегами
|
||||
```bash
|
||||
# Перетегирование образа
|
||||
make docker retag NEW_TAG=v2.0.0
|
||||
|
||||
# Создание нескольких тегов
|
||||
make docker retag NEW_TAG=latest
|
||||
make docker retag NEW_TAG=stable
|
||||
make docker retag NEW_TAG=2024.01.15
|
||||
```
|
||||
|
||||
## 9. Очистка и обслуживание
|
||||
|
||||
### Очистка временных файлов
|
||||
```bash
|
||||
# Очистка логов и временных файлов
|
||||
make docker clean
|
||||
|
||||
# Очистка Docker системы (вручную)
|
||||
docker system prune -f
|
||||
docker image prune -f
|
||||
```
|
||||
|
||||
### Управление архивами
|
||||
```bash
|
||||
# Просмотр сохраненных архивов
|
||||
ls -la images/
|
||||
|
||||
# Проверка целостности архива
|
||||
sha256sum -c images/myapp_v1.0.0.tar.gz.sha256
|
||||
|
||||
# Удаление старых архивов
|
||||
find images/ -name "*.tar.gz" -mtime +30 -delete
|
||||
```
|
||||
Reference in New Issue
Block a user