.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 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))