Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Este projeto demonstra como provisionar infraestrutura na AWS usando Terraform e realizar o deploy de uma aplicação Java containerizada com Docker em uma instância EC2.

Notifications You must be signed in to change notification settings

ddouglss/terraform-java-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

🚀 Deploy de Aplicação Java com Docker na AWS via Terraform

Este projeto demonstra como provisionar infraestrutura na AWS usando Terraform e realizar o deploy de uma aplicação Java containerizada com Docker em uma instância EC2.

🔧 Ideal para desenvolvedores iniciantes em DevOps ou para quem deseja aprender Terraform, Docker e AWS EC2 na prática.


🧰 Tecnologias Utilizadas

  • 🖥️ Java
  • 🍃 Spring Boot
  • 🐳 Docker + Docker Hub
  • ☁️ Amazon EC2 (via Terraform)
  • 📦 Terraform CLI
  • 🔐 AWS CLI + Key Pair SSH

✅ Pré-requisitos

  • Conta na AWS
  • Usuário com acesso programático (Access Key e Secret)
  • AWS CLI configurado (aws configure)
  • Terraform instalado (terraform -v)
  • Docker instalado
  • Chave pública/privada para SSH (ssh-keygen)

📦 Estrutura do Projeto

projeto/
├── app/
│ └── Dockerfile
│ └── SpringBootApp.java
├── infra/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── user_data.sh
└── README.md

📍 Passo a Passo

1. Clonar o projeto

git clone https://github.com/seu-usuario/projeto-java-aws-terraform.git
cd projeto-java-aws-terraform

2. Publicar a imagem Docker no Docker Hub

cd app/
docker build -t seu-usuario/app-java .
docker push seu-usuario/app-java

3. Configurar a infraestrutura com Terraform

cd infra/
terraform init
terraform plan
terraform apply

4. Acessar a aplicação

  • Pegue o IP público da EC2 no output do terraform apply.
  • Acesse via navegador ou Postman:
    http://<ip-publico>:8080
    

5. (Opcional) Destruir a infraestrutura

terraform destroy

🔐 Segurança

  • O acesso via SSH é liberado apenas para seu IP local.
  • Porta 22 (SSH) e 8080 (HTTP) são abertas via Security Group.
  • O script user_data.sh executa o deploy automático ao subir a EC2.

🧠 Aprendizados

✅ Terraform: providers, recursos, outputs, variável de ambiente
✅ AWS: EC2, IAM, VPC, Security Groups
✅ Docker: build, tag, push no Docker Hub
✅ SSH e scripts de inicialização remota


🏗️ Infraestrutura Criada

Recurso Descrição
EC2 Instance Servidor Linux com Docker
SecurityGroup Libera portas 22 e 8080
User Data Script automatiza o deploy
Chave SSH Acesso remoto seguro à máquina

📌 Por que usar Terraform?

  • Automatiza toda a infraestrutura
  • Evita erros manuais (ClickOps)
  • Código versionável e reusável
  • Multi-cloud (AWS, Azure, GCP)

🧩 Comparação: ClickOps vs. IaC

Abordagem Vantagens Desvantagens
ClickOps Fácil para testes Não reproduzível, não versionável
Terraform (IaC) Automação, consistência, versionamento Curva de aprendizado

👨‍💻 Autor

Douglas Souza
Desenvolvedor Java e DevOps em formação
🔗 LinkedInGitHub


📢 Aprendizado 100% prático: da ideia ao deploy real na nuvem!

About

Este projeto demonstra como provisionar infraestrutura na AWS usando Terraform e realizar o deploy de uma aplicação Java containerizada com Docker em uma instância EC2.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /