353 lines
8.4 KiB
Markdown
353 lines
8.4 KiB
Markdown
# 📖 Примеры использования
|
||
|
||
## 1. Базовая сборка и публикация
|
||
|
||
### Простая сборка
|
||
```bash
|
||
# Сборка с двойными тегами
|
||
make docker build IMAGE=myapp TAG1=latest TAG2=v1.0.0
|
||
|
||
# Сборка с кастомным registry
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=latest TAG2=v1.0.0 \
|
||
REGISTRY=hub.cism-ms.ru/library
|
||
|
||
# Сборка с проверкой
|
||
make docker build IMAGE=myapp TAG1=latest TAG2=v1.0.0
|
||
make docker check RUN_CMD="lsb_release -a"
|
||
```
|
||
|
||
### Полный цикл сборки и публикации
|
||
```bash
|
||
# 1. Сборка образа (двойные теги)
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=latest TAG2=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 \
|
||
TAG1=latest TAG2=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 \
|
||
TAG1=latest TAG2=v1.0.0 \
|
||
USE_BUILDX=1 \
|
||
PLATFORMS="linux/amd64,linux/arm64" \
|
||
PUSH=1 \
|
||
LOAD=0
|
||
|
||
# Сборка для всех популярных платформ
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=latest TAG2=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 \
|
||
TAG1=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 \
|
||
TAG1=v1.0.0 \
|
||
BUILD_ARGS="--build-arg VERSION=1.0.0 --build-arg NODE_ENV=production"
|
||
|
||
# Передача пользовательских данных
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=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 \
|
||
TAG1=production \
|
||
DOCKERFILE=Dockerfile.prod
|
||
|
||
# Сборка с контекстом в подпапке
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=v1.0.0 \
|
||
CONTEXT=./app
|
||
```
|
||
|
||
### Работа с разными registry
|
||
```bash
|
||
# Сборка для локального registry
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=v1.0.0 \
|
||
REGISTRY=localhost:5000
|
||
|
||
# Сборка для Docker Hub
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=v1.0.0 \
|
||
REGISTRY=myusername
|
||
|
||
# Сборка для GitLab Registry
|
||
make docker build \
|
||
IMAGE=myapp \
|
||
TAG1=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
|
||
|
||
# Пулл обоих тегов
|
||
make docker pull IMAGE=myapp TAG1=latest TAG2=v2.0.0 REGISTRY=hub.cism-ms.ru/library
|
||
|
||
# Пересборка без кэша с двумя тегами
|
||
make docker rebuild IMAGE=myapp TAG1=latest TAG2=v2.0.0
|
||
```
|
||
|
||
## 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
|
||
```
|