https://github.com/vitorhgdev/projeto-devops-aws
Projeto prático com Python, Docker e Terraform na AWS
https://github.com/vitorhgdev/projeto-devops-aws
aws devops docker docker-compose flask iac postgresql python terraform
Last synced: 3 months ago
JSON representation
Projeto prático com Python, Docker e Terraform na AWS
- Host: GitHub
- URL: https://github.com/vitorhgdev/projeto-devops-aws
- Owner: vitorhgdev
- License: mit
- Created: 2025-10-05T23:40:42.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-31T14:24:36.000Z (8 months ago)
- Last Synced: 2025-10-31T14:36:33.129Z (8 months ago)
- Topics: aws, devops, docker, docker-compose, flask, iac, postgresql, python, terraform
- Language: Python
- Homepage: https://www.linkedin.com/in/hugoovitoor/
- Size: 22.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Projeto DevOps: API Multi-Container com Deploy Automatizado na AWS
[](https://github.com/vitorhgdev/projeto-devops-aws/actions/workflows/ci.yml)
## 🚀 Sobre o Projeto
Este projeto é uma demonstração **completa (de ponta-a-ponta)** de um fluxo de trabalho DevOps. O objetivo foi pegar uma aplicação web multi-container (API Python/Flask + Banco de Dados PostgreSQL) e automatizar todo o seu ciclo de vida.
Este repositório serve como um case prático das minhas habilidades em Cloud, DevOps, Automação e Segurança.
## ✨ Principais Features
Este projeto demonstra as seguintes habilidades e conceitos:
* **Infraestrutura como Código (IaC):** Provisionamento de toda a infraestrutura (EC2, Security Groups) na AWS com `Terraform`.
* **Deploy Automatizado:** Script de `user_data` que instala o Docker e sobe a aplicação na nuvem com um único `terraform apply`.
* **Containerização:** Aplicação e Banco de Dados 100% containerizados com `Docker` e `Docker Compose`.
* **Pipeline de CI/CD (GitHub Actions):**
* **Linting:** Verificação de estilo de código com `flake8`.
* **Testes:** Testes unitários com `pytest` em um ambiente real (subindo os containers).
* **Segurança (DevSecOps):**
* Gerenciamento de segredos locais com `.env` e `GitHub Secrets` para o pipeline de CI.
* Configuração de `Security Group` (firewall) restritivo na AWS.
* Uso de usuário não-root dentro do `Dockerfile`.
## 🏗️ Diagrama da Arquitetura

---
## ⚙️ Como Executar o Projeto
Existem duas formas de executar este projeto:
### Opção 1: Deploy Automatizado na AWS (Recomendado)
Esta opção provisiona a infraestrutura completa na nuvem e faz o deploy da aplicação.
**Pré-requisitos:**
* Conta na AWS (pode ser o [**AWS Academy Learner Lab**]]).
* Terraform e Git instalados.
**Passos:**
1. Clone o repositório:
```bash
git clone [https://github.com/vitorhgdev/projeto-devops-aws.git](https://github.com/vitorhgdev/projeto-devops-aws.git)
cd projeto-devops-aws
```
2. Configure suas credenciais da AWS no seu terminal (necessário se estiver usando o Learner Lab).
3. **(Importante: Segurança)** Edite o arquivo `main.tf`, na regra do `aws_security_group` da porta 22 (SSH), e troque `"0.0.0.0/0"` pelo seu IP público (descubra no Google "meu ip") seguido de `/32`.
4. Inicialize o Terraform:
```bash
terraform init
```
5. Aplique a infraestrutura (o deploy pode levar de 3 a 5 minutos):
```bash
terraform apply
```
(Digite `yes` para confirmar).
6. Ao final, o Terraform mostrará o IP público do servidor. Acesse no seu navegador:
`http://SEU_IP_PUBLICO:5001`
### Opção 2: Execução Local (Para Testes Rápidos)
**Pré-requisitos:**
* Docker e Docker Compose instalados.
**Passos:**
1. Clone o repositório e entre na pasta.
2. Crie um arquivo `.env` na raiz do projeto (este arquivo é ignorado pelo Git):
```
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=mydb
```
3. Suba os containers:
```bash
docker compose up --build
```
4. Acesse no seu navegador: `http://localhost:5001`
---
## ✒️ Autor
**Vítor Hugo Bica**
* **LinkedIn:** [linkedin.com/in/hugoovitoor](https://www.linkedin.com/in/hugoovitoor/)
* **GitHub:** [@vitorhgdev](https://github.com/vitorhgdev)