TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #141 95
Makefile для локальной сборки docker

DOCKER?=docker
DOCKER_COMPOSE?=$(shell if command -v "docker compose" >/dev/null 2>&1; then echo "docker compose"; else echo "docker-compose"; fi)
DOCKER_COMPOSE_PATH=docker/docker-compose.yml

.DEFAULT_GOAL := help
.PHONY: all
all: help
@echo $(COMMIT)--

help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

MODULE := <module_name>
REGISTRY ?= <registry/path>
IMAGE := $(REGISTRY)/$(MODULE)
CONTAINERNAME := <container_name>
BUILDX_CONTAINER := buildx_builder
PLATFORM ?= linux/amd64,linux/arm64
BUILD_DATE ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
TAG ?= $(shell git rev-parse --short=8 HEAD)

.PHONY: docker-build
docker-build: docker/Dockerfile ## Build Docker image
$(DOCKER) buildx inspect ${BUILDX_CONTAINER} >/dev/null 2>&1 || $(DOCKER) buildx create --name ${BUILDX_CONTAINER}
$(DOCKER) buildx use ${BUILDX_CONTAINER}
$(DOCKER) buildx build --provenance=true --platform ${PLATFORM} -t ${IMAGE}:${TAG} -t ${IMAGE}:latest --build-arg BUILD_DATE=${BUILD_DATE} -f docker/Dockerfile .

.PHONY: docker-load
docker-load: docker-build ## Load Docker image
$(DOCKER) buildx inspect ${BUILDX_CONTAINER} >/dev/null 2>&1 || $(DOCKER) buildx create --name ${BUILDX_CONTAINER}
$(DOCKER) buildx use ${BUILDX_CONTAINER}
$(DOCKER) buildx build --load -t ${IMAGE}:${TAG} -t ${IMAGE}:latest --build-arg BUILD_DATE=${BUILD_DATE} -f docker/Dockerfile .

.PHONY: docker-build ## Push Docker image
docker-push: ## Push Docker image to internal registry
$(DOCKER) buildx inspect ${BUILDX_CONTAINER} >/dev/null 2>&1 || $(DOCKER) buildx create --name ${BUILDX_CONTAINER}
@echo "Pushing image to internal registry...\n"
$(DOCKER) buildx use ${BUILDX_CONTAINER}
$(DOCKER) buildx build --provenance=true --platform ${PLATFORM} -t ${IMAGE}:${TAG} -t ${IMAGE}:latest --build-arg BUILD_DATE=${BUILD_DATE} -f docker/Dockerfile --push .

.PHONY: docker-start
docker-start: ## Start Docker container
$(DOCKER_COMPOSE) -f ${DOCKER_COMPOSE_PATH} up

.PHONY: docker-stop
docker-stop: ## Stop Docker Container
$(DOCKER_COMPOSE) -f ${DOCKER_COMPOSE_PATH} down

.PHONY: docker-rm
docker-rm: docker-stop ## Delete Docker Container
$(DOCKER) rm ${CONTAINERNAME}

.PHONY: docker-clean
docker-clean: docker-rm ## Clean
$(DOCKER) rmi ${IMAGE}:${TAG}

.PHONY: docker-shell
docker-shell: ## Start shell in running Docker container
@$(DOCKER) exec -it ${CONTAINERNAME} bash

.PHONY: docker-logs
docker-logs: ## Show Docker container logs
@$(DOCKER) logs ${CONTAINERNAME}

.PHONY: docker-ps
docker-ps:
@$(DOCKER) ps -f name=${CONTAINERNAME}

.PHONY: docker-status
docker-status: docker-ps ## List running Docker containers

.PHONY: docker-ip
docker-ip: ## List IP of running Docker container
@$(DOCKER) inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${CONTAINERNAME}


Предполагает наличие Dockerfile и docker-compose.yml в корне проекта в директории docker.

make docker-build - просто собрать образ, не сохранив в локальный реестр.

make docker-load - собрать образ и сохранить в локальный реестр.

make docker-push - собрать и запушить в registry.

make docker-start - запустить docker-compose.

И прочее, что иногда может пригодится. Удобно для локали.

#docker
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →