Newer
Older
.DEFAULT_GOAL:=help
COMPOSE_PREFIX_CMD := DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1
COMMAND ?= /bin/sh
DC=docker-compose
KAFKA_SERVERS=kafka:29092
KAFKA_CONTAINER=kafka
EXEC_KAFKA=$(COMPOSE_PREFIX_CMD) $(DC) exec $(KAFKA_CONTAINER)
# --------------------------
.PHONY: deploy up build-up build down start stop logs images ps command \
command-root shell-root shell shell-kafka create-kafka-topic restart rm help
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
deploy: ## Start using Prod Image in Prod Mode
${COMPOSE_PREFIX_CMD} docker compose -f compose.prod.yaml up --build -d
up: ## Start service
@echo "Starting Application \n (note: Web container will wait App container to start before starting)"
${COMPOSE_PREFIX_CMD} docker compose up -d
build-up: ## Start service, rebuild if necessary
${COMPOSE_PREFIX_CMD} docker compose up --build -d
build: ## Build The Image
${COMPOSE_PREFIX_CMD} docker compose build --no-cache
down: ## Down service and do clean up
${COMPOSE_PREFIX_CMD} docker compose down
start: ## Start Container
${COMPOSE_PREFIX_CMD} docker compose start
stop: ## Stop Container
${COMPOSE_PREFIX_CMD} docker compose stop
logs: ## Tail container logs with -n 1000
@${COMPOSE_PREFIX_CMD} docker compose logs --follow --tail=100
images: ## Show Image created by this Makefile (or docker compose in docker)
@${COMPOSE_PREFIX_CMD} docker compose images
ps: ## Show Containers Running
@${COMPOSE_PREFIX_CMD} docker compose ps
command: ## Execute command ( make command COMMAND=<command> )
@${COMPOSE_PREFIX_CMD} docker compose run --rm app ${COMMAND}
command-root: ## Execute command as root ( make command-root COMMAND=<command> )
@${COMPOSE_PREFIX_CMD} docker compose run --rm -u root app ${COMMAND}
shell-root: ## Enter container shell as root
@${COMPOSE_PREFIX_CMD} docker compose exec -u root app /bin/sh
shell: ## Enter container shell
@${COMPOSE_PREFIX_CMD} docker compose exec app /bin/sh
shell-kafka: ## Run bash shell in kafka container.
@${COMPOSE_PREFIX_CMD} docker compose exec kafka /bin/sh
create-kafka-topic: ## Create kafka topic
$(MAKE) topic-create send_topic
restart: ## Restart container
@${COMPOSE_PREFIX_CMD} docker compose restart
rm: ## Remove current container
@${COMPOSE_PREFIX_CMD} docker compose rm -f
clear:
docker image prune --filter dangling=true
help: ## Show this help.
@echo "\n\nMake Application Docker Images and Containers using Docker-Compose files"
@echo "Make sure you are using \033[0;32mDocker Version >= 20.1\033[0m & \033[0;32mDocker-Compose >= 1.27\033[0m "
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m ENV=<prod|dev> (default: dev)\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-12s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
.PHONY: topics topic topic-create producer-create consumer-groups consumer-group
topics: ## Display list of topics
$(EXEC_KAFKA) kafka-topics --list --bootstrap-server $(KAFKA_SERVERS)
topic: ## Describe existing topic
$(EXEC_KAFKA) kafka-topics --describe --bootstrap-server $(KAFKA_SERVERS) --topic $(filter-out $@,$(MAKECMDGOALS))
topic-create: ## Create new topic
$(EXEC_KAFKA) kafka-topics --create --bootstrap-server $(KAFKA_SERVERS) --topic $(filter-out $@,$(MAKECMDGOALS))
producer-create: ## Create a topic producer
$(EXEC_KAFKA) kafka-console-producer --bootstrap-server $(KAFKA_SERVERS) --topic $(filter-out $@,$(MAKECMDGOALS))
consumer-groups: ## Display list of consumer group
$(EXEC_KAFKA) kafka-consumer-groups --list --bootstrap-server $(KAFKA_SERVERS)
consumer-group: ## Describe existing consumer group
$(EXEC_KAFKA) kafka-consumer-groups --describe --bootstrap-server $(KAFKA_SERVERS) --group $(filter-out $@,$(MAKECMDGOALS))