Files
Dockerfile/docs/makefile.md
2025-10-29 14:47:35 +03:00

12 KiB
Raw Blame History

⚙️ Makefile

Основные команды

Docker команды

Команда Описание Пример
make docker build Собрать Docker-образ make docker build IMAGE=myapp TAG=v1.0
make docker check Проверить образ make docker check RUN_CMD="java -version"
make docker push Собрать + проверить + отправить make docker push IMAGE=myapp TAG=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

TAG

Описание: Тег образа
По умолчанию: latest
Примеры:

TAG=latest
TAG=v1.0.0
TAG=dev
TAG=2024.01.15

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 build
  • 1 - использовать 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 - не выполнять push
  • 1 - выполнить push после сборки

Примечание: Работает только с USE_BUILDX=1

LOAD

Описание: Загрузить образ в локальный docker после сборки
По умолчанию: 1
Значения:

  • 0 - не загружать (актуально для CI/CD)
  • 1 - загрузить в локальный docker

NO_CACHE

Описание: Сборка без использования кэша
По умолчанию: 0
Значения:

  • 0 - использовать кэш Docker
  • 1 - сборка без кэша

Примеры:

# Сборка с кэшем (быстрее)
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 - оставить tar
  • 1 - сжать 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 из Makefile
  • 1 - использовать тег из загруженного архива

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

Описание: Полное имя образа REGISTRY/IMAGE:TAG
Формируется автоматически: $(REGISTRY)/$(IMAGE):$(TAG)
Примеры:

FULL_IMAGE=hub.cism-ms.ru/library/myapp:latest
FULL_IMAGE=registry.local/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=