8.4 KiB
8.4 KiB
📖 Примеры использования
1. Базовая сборка и публикация
Простая сборка
# Сборка с двойными тегами
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"
Полный цикл сборки и публикации
# 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
# Создание buildx builder
make docker create-builder
# Проверка builder'а
make docker use-builder
# Просмотр доступных платформ
docker buildx inspect --bootstrap
Сборка для нескольких платформ
# Сборка для 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. Оффлайн деплой
Сохранение образов
# Простое сохранение
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
Загрузка и публикация
# Простая загрузка
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
# Передача переменных окружения
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
# Создание файла с аргументами
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
Базовые операции
# Просмотр статуса
make git status
# Получение изменений
make git pull
# Коммит с сообщением
make git commit GIT_MSG="Добавлена поддержка Docker"
# Коммит и push
make git push GIT_MSG="Обновлена документация"
Продвинутые сценарии
# Синхронизация с удаленным репозиторием
make git sync
# Работа с разными удаленными репозиториями
make git pull GIT_REMOTE=upstream
make git push GIT_REMOTE=origin GIT_MSG="Синхронизация с upstream"
6. Работа с разными операционными системами
Linux (Ubuntu/Debian)
# Установка 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)
# Установка 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
# Установка через Homebrew
brew install docker
brew install make
# Или установка Docker Desktop
# Скачайте с https://www.docker.com/products/docker-desktop
# Проверка установки
docker --version
make --version
Windows
# Через 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. Отладка и мониторинг
Просмотр конфигурации
# Показать все переменные
make docker print-config
# Показать информацию об образе
make docker inspect
# Просмотр логов сборки
tail -f logs/build_20240115_143022.log
Проверка образов
# Проверка версии 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
# Сборка с Dockerfile.prod
make docker build \
IMAGE=myapp \
TAG1=production \
DOCKERFILE=Dockerfile.prod
# Сборка с контекстом в подпапке
make docker build \
IMAGE=myapp \
TAG1=v1.0.0 \
CONTEXT=./app
Работа с разными registry
# Сборка для локального 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
Управление тегами
# Перетегирование образа (локально)
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. Очистка и обслуживание
Очистка временных файлов
# Очистка логов и временных файлов
make docker clean
# Очистка Docker системы (вручную)
docker system prune -f
docker image prune -f
Управление архивами
# Просмотр сохраненных архивов
ls -la images/
# Проверка целостности архива
sha256sum -c images/myapp_v1.0.0.tar.gz.sha256
# Удаление старых архивов
find images/ -name "*.tar.gz" -mtime +30 -delete