#!/bin/bash # build.sh - Script para build e deploy do JobMaker set -e echo "🚀 JobMaker Build & Deploy Script" echo "=================================" # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Função para logs coloridos log_info() { echo -e "${BLUE}ℹ️ $1${NC}" } log_success() { echo -e "${GREEN}✅ $1${NC}" } log_warning() { echo -e "${YELLOW}⚠️ $1${NC}" } log_error() { echo -e "${RED}❌ $1${NC}" } # Verificar se Docker está instalado if ! command -v docker &> /dev/null; then log_error "Docker não está instalado!" exit 1 fi # Verificar estrutura de arquivos log_info "Verificando estrutura de arquivos..." required_files=( "index.html" "en/index.html" "css/styles.css" "js/scripts.js" "assets/img/jobmaker_logo.png" "Dockerfile" "nginx.conf" ) for file in "${required_files[@]}"; do if [[ ! -f "$file" ]]; then log_error "Arquivo obrigatório não encontrado: $file" exit 1 fi done log_success "Todos os arquivos obrigatórios encontrados!" # Build da imagem Docker log_info "Construindo imagem Docker..." IMAGE_NAME="jobmaker-website" IMAGE_TAG="latest" docker build -t $IMAGE_NAME:$IMAGE_TAG . || { log_error "Falha no build da imagem Docker!" exit 1 } log_success "Imagem Docker construída: $IMAGE_NAME:$IMAGE_TAG" # Parar container existente se estiver rodando if docker ps -q -f name=jobmaker-web &> /dev/null; then log_info "Parando container existente..." docker stop jobmaker-web || true docker rm jobmaker-web || true fi # Executar novo container log_info "Iniciando novo container..." docker run -d \ --name jobmaker-web \ -p 8080:80 \ --restart unless-stopped \ $IMAGE_NAME:$IMAGE_TAG || { log_error "Falha ao iniciar container!" exit 1 } log_success "Container iniciado com sucesso!" # Verificar se o site está respondendo log_info "Verificando se o site está respondendo..." sleep 3 if curl -f http://localhost:8080 &> /dev/null; then log_success "Site está online! 🎉" echo "" echo "📍 URLs disponíveis:" echo " Português: http://localhost:8080" echo " English: http://localhost:8080/en/" echo "" echo "🐳 Comandos Docker úteis:" echo " Ver logs: docker logs jobmaker-web" echo " Parar: docker stop jobmaker-web" echo " Reiniciar: docker restart jobmaker-web" echo " Remover: docker rm -f jobmaker-web" else log_error "Site não está respondendo!" echo "" echo "🔍 Para debug, verifique os logs:" echo " docker logs jobmaker-web" exit 1 fi # Mostrar informações do container echo "" log_info "Informações do container:" docker ps | grep jobmaker-web echo "" log_success "Deploy concluído com sucesso! 🚀" --- #!/bin/bash # deploy-production.sh - Script para deploy em produção set -e echo "🚀 JobMaker Production Deploy" echo "============================" # Verificar se estamos na branch main BRANCH=$(git branch --show-current) if [[ "$BRANCH" != "main" ]]; then log_error "Deploy de produção deve ser feito da branch main!" log_info "Branch atual: $BRANCH" exit 1 fi # Verificar se não há mudanças pendentes if [[ -n $(git status --porcelain) ]]; then log_error "Há mudanças não commitadas!" log_info "Commit suas mudanças antes do deploy." exit 1 fi # Configurações de produção REGISTRY="your-registry.com" # Substituir pelo seu registry IMAGE_NAME="jobmaker-website" VERSION=$(git rev-parse --short HEAD) PRODUCTION_TAG="$REGISTRY/$IMAGE_NAME:$VERSION" LATEST_TAG="$REGISTRY/$IMAGE_NAME:latest" log_info "Versão: $VERSION" # Build da imagem log_info "Construindo imagem para produção..." docker build -t $PRODUCTION_TAG -t $LATEST_TAG . # Push para registry log_info "Enviando imagem para registry..." docker push $PRODUCTION_TAG docker push $LATEST_TAG # Deploy (exemplo para Docker Swarm) log_info "Fazendo deploy em produção..." # Criar/atualizar serviço Docker Swarm docker service create \ --name jobmaker-web \ --publish 80:80 \ --replicas 2 \ --update-parallelism 1 \ --update-delay 10s \ --restart-condition on-failure \ --restart-max-attempts 3 \ $LATEST_TAG || \ docker service update \ --image $LATEST_TAG \ jobmaker-web log_success "Deploy de produção concluído!" echo "" echo "🌐 Site em produção:" echo " https://jobmaker.com.br" echo " https://jobmaker.com.br/en/" --- # docker-compose.yml - Para desenvolvimento local version: '3.8' services: jobmaker-web: build: . ports: - "8080:80" volumes: - .:/usr/share/nginx/html:ro restart: unless-stopped container_name: jobmaker-web-dev # Nginx para HTTPS local (desenvolvimento) nginx-ssl: image: nginx:alpine ports: - "443:443" volumes: - ./nginx-ssl.conf:/etc/nginx/conf.d/default.conf - ./ssl/:/etc/ssl/certs/ depends_on: - jobmaker-web profiles: - ssl --- # .dockerignore .git .gitignore README.md *.md .env .env.* node_modules *.log .DS_Store Thumbs.db # Arquivos de desenvolvimento *.sh docker-compose.yml .dockerignore # Arquivos temporários *.tmp *.temp