Created
February 3, 2026 02:34
-
-
Save fabianoflorentino/74edb505c7a0676a0eeba58780b380f7 to your computer and use it in GitHub Desktop.
Gerenciamento do ambiente de desenvolvimento do blog Hugo com Docker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ============================================================================ | |
| # Hugo Blog - Makefile | |
| # ============================================================================ | |
| # Gerenciamento do ambiente de desenvolvimento do blog Hugo com Docker | |
| # ============================================================================ | |
| .PHONY: help build up down restart logs shell clean rebuild status new-post \ | |
| new-draft list-content build-prod generate check-deps info watch url \ | |
| dev quick-start quick-stop logs-tail health prune | |
| # ============================================================================ | |
| # Variáveis | |
| # ============================================================================ | |
| COMPOSE_FILE := docker-compose.yml | |
| SERVICE_NAME := blog | |
| CONTAINER_NAME := blog | |
| # ============================================================================ | |
| # Cores para output | |
| # ============================================================================ | |
| RED := \033[0;31m | |
| GREEN := \033[0;32m | |
| YELLOW := \033[0;33m | |
| BLUE := \033[0;34m | |
| NC := \033[0m # No Color | |
| # ============================================================================ | |
| # Default target | |
| # ============================================================================ | |
| .DEFAULT_GOAL := help | |
| ##@ Ajuda | |
| help: ## Mostra esta mensagem de ajuda | |
| @echo "" | |
| @echo -e "$(BLUE)╔══════════════════════════════════════════════════════════╗$(NC)" | |
| @echo -e "$(BLUE)║ Hugo Blog - Comandos Disponíveis ║$(NC)" | |
| @echo -e "$(BLUE)╚══════════════════════════════════════════════════════════╝$(NC)" | |
| @echo "" | |
| @awk 'BEGIN {FS = ":.*##"; printf ""} /^[a-zA-Z_-]+:.*?##/ { printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2 } /^##@/ { printf "\n$(YELLOW)%s$(NC)\n", substr($$0, 5) } ' $(MAKEFILE_LIST) | |
| @echo "" | |
| ##@ Desenvolvimento | |
| build: ## Faz o build da imagem Docker | |
| @echo -e "$(BLUE)🔨 Building Docker image...$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) build | |
| @echo -e "$(GREEN)✓ Build concluído!$(NC)" | |
| up: ## Inicia o servidor de desenvolvimento | |
| @echo -e "$(BLUE)🚀 Iniciando servidor de desenvolvimento...$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) up -d | |
| @echo -e "$(GREEN)✓ Servidor iniciado!$(NC)" | |
| @echo -e "$(YELLOW)📝 Blog disponível em: http://localhost:1313$(NC)" | |
| down: ## Para o servidor de desenvolvimento | |
| @echo -e "$(BLUE)🛑 Parando servidor...$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) down | |
| @echo -e "$(GREEN)✓ Servidor parado!$(NC)" | |
| restart: down up ## Reinicia o servidor | |
| logs: ## Mostra os logs do container | |
| @docker-compose -f $(COMPOSE_FILE) logs -f $(SERVICE_NAME) | |
| logs-tail: ## Mostra as últimas 100 linhas dos logs | |
| @docker-compose -f $(COMPOSE_FILE) logs --tail=100 $(SERVICE_NAME) | |
| shell: ## Abre um shell no container | |
| @echo -e "$(BLUE)🐚 Abrindo shell no container...$(NC)" | |
| @docker exec -it $(CONTAINER_NAME) sh | |
| ##@ Gerenciamento | |
| status: ## Mostra o status dos containers | |
| @echo -e "$(BLUE)📊 Status dos containers:$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) ps | |
| ls: status ## Alias para status | |
| health: ## Verifica a saúde do container | |
| @echo -e "$(BLUE)🏥 Verificando saúde do container...$(NC)" | |
| @docker inspect --format='{{.State.Health.Status}}' $(CONTAINER_NAME) 2>/dev/null || echo "Container não está rodando" | |
| rebuild: clean build up ## Reconstrói tudo do zero | |
| clean: ## Remove containers, volumes e imagens | |
| @echo -e "$(YELLOW)🧹 Limpando ambiente...$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) down -v --remove-orphans | |
| @docker rmi fabianoflorentino/blog:v0.0.1 2>/dev/null || true | |
| @echo -e "$(GREEN)✓ Ambiente limpo!$(NC)" | |
| prune: ## Remove todos os recursos Docker não utilizados (cuidado!) | |
| @echo -e "$(RED)⚠️ Isso vai remover TODOS os recursos Docker não utilizados!$(NC)" | |
| @echo -e "$(YELLOW)Pressione Ctrl+C para cancelar, ou Enter para continuar...$(NC)" | |
| @read confirm | |
| @docker system prune -af --volumes | |
| @echo -e "$(GREEN)✓ Limpeza completa!$(NC)" | |
| ##@ Conteúdo | |
| new-post: ## Cria um novo post (uso: make new-post TITLE="Meu Post") | |
| @if [ -z "$(TITLE)" ]; then \ | |
| echo "$(RED)❌ Erro: Informe o título do post$(NC)"; \ | |
| echo "$(YELLOW)Uso: make new-post TITLE=\"Meu Título\"$(NC)"; \ | |
| exit 1; \ | |
| fi | |
| @echo -e "$(BLUE)📝 Criando novo post...$(NC)" | |
| @docker exec $(CONTAINER_NAME) hugo new posts/$(shell echo "$(TITLE)" | tr '[:upper:]' '[:lower:]' | tr ' ' '-').md | |
| @echo -e "$(GREEN)✓ Post criado!$(NC)" | |
| new-draft: ## Cria um novo draft (uso: make new-draft TITLE="Meu Draft") | |
| @if [ -z "$(TITLE)" ]; then \ | |
| echo "$(RED)❌ Erro: Informe o título do draft$(NC)"; \ | |
| echo "$(YELLOW)Uso: make new-draft TITLE=\"Meu Título\"$(NC)"; \ | |
| exit 1; \ | |
| fi | |
| @echo -e "$(BLUE)📝 Criando novo draft...$(NC)" | |
| @docker exec $(CONTAINER_NAME) hugo new --kind post-bundle posts/$(shell echo "$(TITLE)" | tr '[:upper:]' '[:lower:]' | tr ' ' '-') | |
| @echo -e "$(GREEN)✓ Draft criado!$(NC)" | |
| list-content: ## Lista todo o conteúdo do blog | |
| @echo -e "$(BLUE)📋 Conteúdo do blog:$(NC)" | |
| @docker exec $(CONTAINER_NAME) hugo list all | |
| ##@ Produção | |
| build-prod: ## Faz build da imagem de produção | |
| @echo -e "$(BLUE)🔨 Building production image...$(NC)" | |
| @docker build --target production -t fabianoflorentino/blog:v0.0.1-prod . | |
| @echo -e "$(GREEN)✓ Build de produção concluído!$(NC)" | |
| generate: ## Gera os arquivos estáticos do site | |
| @echo -e "$(BLUE)🏗️ Gerando site estático...$(NC)" | |
| @docker exec $(CONTAINER_NAME) hugo | |
| @echo -e "$(GREEN)✓ Site gerado em ./public$(NC)" | |
| ##@ Utilitários | |
| check-deps: ## Verifica se as dependências estão instaladas | |
| @echo -e "$(BLUE)🔍 Verificando dependências...$(NC)" | |
| @command -v docker >/dev/null 2>&1 || { echo "$(RED)❌ Docker não instalado$(NC)"; exit 1; } | |
| @command -v docker-compose >/dev/null 2>&1 || { echo "$(RED)❌ Docker Compose não instalado$(NC)"; exit 1; } | |
| @echo -e "$(GREEN)✓ Todas as dependências instaladas!$(NC)" | |
| info: ## Mostra informações do ambiente | |
| @echo -e "$(BLUE)ℹ️ Informações do ambiente:$(NC)" | |
| @echo -e "$(YELLOW)Docker version:$(NC)" | |
| @docker --version | |
| @echo -e "$(YELLOW)Docker Compose version:$(NC)" | |
| @docker-compose --version | |
| @echo -e "$(YELLOW)Imagens Hugo:$(NC)" | |
| @docker images | grep blog || echo "Nenhuma imagem encontrada" | |
| watch: ## Monitora mudanças nos arquivos e mostra logs | |
| @echo -e "$(BLUE)👀 Monitorando mudanças...$(NC)" | |
| @docker-compose -f $(COMPOSE_FILE) logs -f $(SERVICE_NAME) | |
| url: ## Mostra a URL do blog | |
| @echo -e "$(GREEN)🌐 Blog disponível em: http://localhost:1313$(NC)" | |
| ##@ Desenvolvimento Rápido | |
| dev: check-deps build up logs ## Inicia ambiente completo de desenvolvimento | |
| quick-start: up url ## Inicia rapidamente (sem rebuild) | |
| quick-stop: down ## Para rapidamente |
Author
fabianoflorentino
commented
Feb 3, 2026
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment