# Variáveis de ambiente DOCKER_IMAGE=front-face-recognition DOCKER_IMAGE_DLIB=dlib-build-image DOCKER_TAG=latest LATEST_TAG=latest AWS_REGION=us-east-2 # Verificação de quem é o usuário e carregamento das variáveis WHOAMI=$(shell whoami) ifeq ($(WHOAMI),gitlab-runner) AWS_ACCESS_KEY_ID ?= $(AWS_ACCESS_KEY_ID) AWS_SECRET_ACCESS_KEY ?= $(AWS_SECRET_ACCESS_KEY) DOCKER_REGISTRY ?= $(shell echo 794038208959.dkr.ecr.$(AWS_REGION).amazonaws.com) else ifeq ($(WHOAMI),verde001) AWS_ACCESS_KEY_ID=$(shell awk '/aws_access_key_id/ { print $$3 }' ~/.aws/credentials) AWS_SECRET_ACCESS_KEY=$(shell awk '/aws_secret_access_key/ { print $$3 }' ~/.aws/credentials) AWS_PROFILE=$(shell awk '/profile/ { print $$2 }' ~/.aws/config) DOCKER_REGISTRY ?= $(shell echo 794038208959.dkr.ecr.$(AWS_REGION).amazonaws.com) endif .PHONY: all build login-aws pull-latest push publish deploy run stop logs clean format check help # Alvo principal que executa todas as etapas all: build login-aws pull-latest push # Nome da imagem do Docker IMAGE_NAME= front-face-recognition PUBLIC_IP = 18.119.123.240 # Login no AWS ECR login-aws: ## Faz o login no AWS ECR @echo "Logando no AWS ECR" aws ecr get-login-password --region $(AWS_REGION) | docker login --username AWS --password-stdin $(DOCKER_REGISTRY) # Constrói a imagem Docker build: ## Constrói a imagem Docker docker build -t $(DOCKER_IMAGE):$(LATEST_TAG) . build-dlib: ## Constrói a imagem Docker docker build -t $(DOCKER_IMAGE_DLIB):$(LATEST_TAG) Dockerfile-dlib # Puxa a imagem mais recente (latest) do repositório pull-latest: ## Puxa a imagem mais recente (latest) do repositório @echo "Puxando a imagem mais recente (latest)" docker pull $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(LATEST_TAG) || true # Publica a imagem no Docker Registry (com o SHA do commit e latest) publish: ## Publica a imagem no Docker Registry @echo "Tagueando e enviando as imagens" # Tag também como latest docker tag $(DOCKER_IMAGE):$(LATEST_TAG) $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(LATEST_TAG) docker push $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(LATEST_TAG) # Deploy para o EKS deploy: ## Realiza o deploy no EC2 @echo "Deploy para o EC2 em andamento..." ansible-playbook -i infraestrutura/hosts infraestrutura/deploy.yml deploy-ci: ## Realiza o deploy no EC2 @echo "Deploy para o EC2 em andamento..." ansible-playbook -i infraestrutura/hosts-ci infraestrutura/deploy.yml db: ## Realiza o deploy do Redis e MinIO @echo "Deploy do Redis e MinIO em andamento..." ansible-playbook -i infraestrutura/hosts infraestrutura/database.yml ssh: ## SSH ACESSAR chmod 400 cred/vm_dev_key.pem ssh -i cred/vm_dev_key.pem ubuntu@$(PUBLIC_IP) # Executa o contêiner Docker em segundo plano run: ## Executa o contêiner Docker em segundo plano docker run -d -p 5001:5001 --restart always --name $(IMAGE_NAME)_container $(DOCKER_IMAGE):$(LATEST_TAG) # Mostra os logs do contêiner em execução logs: ## Exibe os logs do contêiner em execução docker logs -f $(IMAGE_NAME)_container # Para e remove o contêiner Docker stop: ## Para e remove o contêiner Docker docker stop $(IMAGE_NAME)_container || true docker rm $(IMAGE_NAME)_container || true # Limpa as imagens e contêineres Docker clean: ## Limpa as imagens e contêineres Docker make stop docker rmi $(DOCKER_IMAGE):$(DOCKER_TAG) || true # Formata o código na pasta src usando black format: ## Formata o código na pasta src usando black black src # Roda os testes de sistema com unittest check: ## Roda os testes de sistema usando unittest python -m unittest discover -s tests -p "test_system.py" # Exibe a mensagem de ajuda help: ## Exibe esta mensagem de ajuda @echo "Escolha um alvo para executar:" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'