12 KiB
⚙️ Makefile
Основные команды
Docker команды
| Команда | Описание | Пример |
|---|---|---|
make docker build |
Собрать Docker-образ (двойные теги) | make docker build IMAGE=myapp TAG1=latest TAG2=v1.0 |
make docker check |
Проверить образ | make docker check RUN_CMD="java -version" |
make docker push |
Собрать + проверить + отправить (оба тега) | make docker push IMAGE=myapp TAG1=latest TAG2=v1.0 |
make docker rebuild |
Пересобрать без кэша (оба тега) | make docker rebuild IMAGE=myapp TAG1=latest TAG2=v1.0 |
make docker pull |
Скачать/обновить образы по тегам | make docker pull IMAGE=myapp TAG1=latest TAG2=v1.0 |
make docker save |
Сохранить образ в архив | make docker save SRC_IMAGE=myapp:latest |
make docker load |
Загрузить из архива | make docker load ARCHIVE=images/myapp.tar |
make docker login |
Авторизация в registry | make docker login REGISTRY=hub.cism-ms.ru |
make docker retag |
Перетегировать образ | make docker retag NEW_TAG=v2.0 |
make docker inspect |
Просмотреть метаданные | make docker inspect |
make docker clean |
Очистить временные файлы | make docker clean |
Git команды
| Команда | Описание | Пример |
|---|---|---|
make git status |
Показать статус репозитория | make git status |
make git pull |
Получить изменения | make git pull |
make git commit |
Создать коммит | make git commit GIT_MSG="Обновление" |
make git push |
Коммит + push | make git push GIT_MSG="Новая версия" |
make git sync |
Pull + commit + push | make git sync |
Подробное описание переменных
Основные Docker переменные
REGISTRY
Описание: Адрес Docker Registry без протокола
По умолчанию: hub.cism-ms.ru/library
Примеры:
REGISTRY=hub.cism-ms.ru/library
REGISTRY=registry.gitlab.com/myproject
REGISTRY=localhost:5000
IMAGE
Описание: Имя Docker-образа (обязательное поле при сборке)
По умолчанию: пустое
Примеры:
IMAGE=myapp
IMAGE=web-frontend
IMAGE=api-backend
TAG1 / TAG2
Описание: Основной и дополнительный тег образа (двойное тегирование)
По умолчанию: TAG1=latest, TAG2=v.0.0.1
Примеры:
TAG1=latest TAG2=v1.0.0
TAG1=stable TAG2=v1.0.1
TAG1=dev # без второго тега
CONTEXT
Описание: Папка контекста сборки Docker
По умолчанию: . (текущая директория)
Примеры:
CONTEXT=.
CONTEXT=./app
CONTEXT=/path/to/build/context
DOCKERFILE
Описание: Имя Dockerfile, используемого при сборке
По умолчанию: Dockerfile
Примеры:
DOCKERFILE=Dockerfile
DOCKERFILE=Dockerfile.prod
DOCKERFILE=./docker/Dockerfile
Режимы сборки
USE_BUILDX
Описание: Использовать Docker Buildx для мультиплатформенной сборки
По умолчанию: 0
Значения:
0- обычныйdocker build1- использоватьdocker buildx build
Примеры:
# Обычная сборка
USE_BUILDX=0
# Мультиплатформенная сборка
USE_BUILDX=1 PLATFORMS="linux/amd64,linux/arm64"
PLATFORMS
Описание: Целевые платформы для buildx (через запятую)
По умолчанию: linux/amd64
Примеры:
PLATFORMS=linux/amd64
PLATFORMS=linux/amd64,linux/arm64
PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7
PUSH
Описание: Выполнить docker push после buildx
По умолчанию: 0
Значения:
0- не выполнять push1- выполнить push после сборки
Примечание: Работает только с USE_BUILDX=1
LOAD
Описание: Загрузить образ в локальный docker после сборки
По умолчанию: 1
Значения:
0- не загружать (актуально для CI/CD)1- загрузить в локальный docker
NO_CACHE
Описание: Сборка без использования кэша
По умолчанию: 0
Значения:
0- использовать кэш Docker1- сборка без кэша
Примеры:
# Сборка с кэшем (быстрее)
NO_CACHE=0
# Сборка без кэша (медленнее, но чище)
NO_CACHE=1
PULL
Описание: Принудительно обновить базовые образы
По умолчанию: 0
Значения:
0- использовать локальные образы1- принудительно скачать последние версии
QUIET
Описание: Минимальный вывод в консоль
По умолчанию: 0
Значения:
0- стандартный вывод1- минимальный вывод (для CI/CD)
Аргументы сборки
BUILD_ARGS
Описание: Дополнительные аргументы для docker build
По умолчанию: пустое
Формат: --build-arg KEY=VALUE --build-arg KEY2=VALUE2
Примеры:
BUILD_ARGS="--build-arg VERSION=1.0.0 --build-arg DEBUG=1"
BUILD_ARGS="--build-arg NODE_ENV=production"
BUILD_ARGS="--build-arg USER_ID=1000 --build-arg GROUP_ID=1000"
ARG_FILE
Описание: Путь к файлу с переменными KEY=VALUE
По умолчанию: пустое
Формат файла: Каждая строка содержит KEY=VALUE
Пример файла build.args:
VERSION=1.0.0
BUILD_DATE=2024-01-15
GIT_COMMIT=abc123def
NODE_ENV=production
USER_ID=1000
GROUP_ID=1000
Использование:
make docker build ARG_FILE=build.args
Проверка и логирование
RUN_CMD
Описание: Команда для проверки контейнера после сборки
По умолчанию: lsb_release -a
Примеры:
RUN_CMD="java -version"
RUN_CMD="node --version"
RUN_CMD="python3 --version"
RUN_CMD="curl -f http://localhost:8080/health"
BUILDER
Описание: Имя buildx builder'а
По умолчанию: universal-builder
Примеры:
BUILDER=universal-builder
BUILDER=my-custom-builder
BUILDER=ci-builder
LOG_DIR
Описание: Каталог для логов сборок
По умолчанию: logs
Примеры:
LOG_DIR=logs
LOG_DIR=./build-logs
LOG_DIR=/var/log/docker-builds
LOG_FILE
Описание: Файл лога (формируется автоматически)
По умолчанию: $(LOG_DIR)/build_$(shell date +%Y%m%d_%H%M%S).log
Пример: logs/build_20240115_143022.log
Оффлайн переменные (SAVE/LOAD)
ARCHIVE
Описание: Путь к архиву образа (tar или gz)
По умолчанию: image.tar
Примеры:
ARCHIVE=image.tar
ARCHIVE=images/myapp_v1.0.0.tar.gz
ARCHIVE=/backup/containers/myapp.tar
IMAGES_DIR
Описание: Каталог для сохранения архивов Docker-образов
По умолчанию: images
Примеры:
IMAGES_DIR=images
IMAGES_DIR=./docker-images
IMAGES_DIR=/backup/containers
SRC_IMAGE
Описание: Имя исходного образа для сохранения
По умолчанию: $(FULL_IMAGE) если IMAGE задан
Примеры:
SRC_IMAGE=myapp:latest
SRC_IMAGE=ubuntu:22.04
SRC_IMAGE=registry.local/myapp:v1.0
COMPRESS
Описание: Сжать архив gzip
По умолчанию: 0
Значения:
0- оставить tar1- сжать gzip
Примеры:
# Сохранить как tar
make docker save SRC_IMAGE=myapp:latest COMPRESS=0
# Сохранить как tar.gz
make docker save SRC_IMAGE=myapp:latest COMPRESS=1
SPLIT_SIZE
Описание: Размер чанка для разбиения архива
По умолчанию: пустое (не разбивать)
Примеры:
SPLIT_SIZE=2G # Разбить на части по 2GB
SPLIT_SIZE=1G # Разбить на части по 1GB
SPLIT_SIZE=500M # Разбить на части по 500MB
LOGIN
Описание: Выполнить docker login перед push
По умолчанию: 1
Значения:
0- пропустить авторизацию1- выполнить docker login
PUSH_OFFLINE
Описание: Выполнить docker push после загрузки архива
По умолчанию: 1
Значения:
0- только загрузить1- загрузить и запушить
KEEP_SRC_TAG
Описание: Использовать тег из архива
По умолчанию: 1
Значения:
0- использовать TAG из Makefile1- использовать тег из загруженного архива
OFFLINE_DIR
Описание: Временная служебная папка для оффлайн операций
По умолчанию: .offline
Содержит: load.log, src_image.txt, dst_image.txt, last_save.txt
LAST_SAVE
Описание: Путь к последнему сохранённому архиву
По умолчанию: $(OFFLINE_DIR)/last_save.txt
Git переменные
GIT_REMOTE
Описание: Имя удалённого репозитория
По умолчанию: origin
Примеры:
GIT_REMOTE=origin
GIT_REMOTE=upstream
GIT_REMOTE=backup
GIT_BRANCH
Описание: Текущая ветка (определяется автоматически)
По умолчанию: $(shell git rev-parse --abbrev-ref HEAD)
Примеры: main, develop, feature/new-feature
GIT_MSG
Описание: Сообщение коммита
По умолчанию: запрашивается вручную
Примеры:
GIT_MSG="Добавлена поддержка Docker"
GIT_MSG="Исправлена ошибка в сборке"
GIT_MSG="Обновлены зависимости"
Служебные переменные
FULL_IMAGE / FULL_IMAGE_1 / FULL_IMAGE_2
Описание: Полные имена образов
Формируется автоматически:
FULL_IMAGE=$(REGISTRY)/$(IMAGE):$(TAG1)FULL_IMAGE_1=$(REGISTRY)/$(IMAGE):$(TAG1)FULL_IMAGE_2=$(REGISTRY)/$(IMAGE):$(TAG2)Примеры:
FULL_IMAGE_1=hub.cism-ms.ru/library/myapp:latest
FULL_IMAGE_2=hub.cism-ms.ru/library/myapp:v1.0.0
Цвета вывода
Описание: ANSI-коды для форматирования вывода
Переменные:
COLOR_RESET- сброс цветаCOLOR_INFO- синий цвет для информацииCOLOR_OK- зелёный цвет для успехаCOLOR_ERR- красный цвет для ошибокCOLOR_WARN- жёлтый цвет для предупреждений
Отключение цветов (для CI):
COLOR_RESET= COLOR_INFO= COLOR_OK= COLOR_ERR= COLOR_WARN=