🚀 Capítulo 20: A Era de Ultron P2 (Tema: Vingadores)
NOTE
Este capítulo finaliza o curso de Backend com Java e Spring Boot. Aprenda a empacotar a sua aplicação e a usar o Docker para colocá-la no mundo real!
1. 🎯 Objetivo da Aula
Compreender como empacotar a aplicação Spring Boot gerando o arquivo executável .jar, e entender o conceito de Docker para criar contêineres e garantir a portabilidade do sistema.
2. 🏢 O Cenário Prático (Seu Desafio)
No final do filme Vingadores: Era de Ultron, após muitas batalhas e correções no código do sistema, a equipe dos Vingadores consegue conter a ameaça do robô Ultron e estabilizar o sistema de defesa. O projeto foi concluído e agora está pronto para proteger o mundo!
O seu projeto de API de E-commerce está pronto e funcionando perfeitamente! Mas, por enquanto, ele só roda dentro do seu computador de desenvolvimento (o famoso localhost).
- Para que uma empresa de verdade possa usar o seu sistema, nós precisamos “empacotar” todo o código Java e as configurações em um único arquivo de entrega.
- No Java, esse arquivo de pacote se chama
.jar(Java Archive). - E para garantir que esse arquivo rode em qualquer servidor do mundo (na nuvem) sem dar o erro clássico de “Na minha máquina funciona, mas no servidor não”, nós usamos o Docker! Seu desafio final é estabilizar o sistema e lançá-lo para o mundo!
🧠 Fundamentos: A Teoria Traduzida
📦 1. O arquivo .jar:
Quando você termina o projeto e usa o Maven para compilar (comando mvn clean package), ele junta todas as suas classes, imagens e arquivos de configuração e gera um único arquivo gigante com a extensão .jar. Ele funciona como o .exe do Windows: basta dar dois cliques ou rodar no terminal para o seu sistema inteiro ligar!
🐳 2. O que é o Docker?
É uma plataforma que permite empacotar a sua aplicação (o arquivo .jar) junto com todas as coisas que ela precisa para rodar (como a versão exata do Java e do banco de dados) dentro de uma caixa fechada chamada Contêiner.
- A grande vantagem: O contêiner do Docker roda exatamente do mesmo jeito no seu computador, no computador do seu chefe ou nos servidores da Amazon e da Google!
- O Docker combina perfeitamente com a filosofia do Java que vimos no Capítulo : portabilidade total!
4. 📖 Exemplo Guiado: O Arquivo Dockerfile
Para dizer ao Docker como ele deve criar a caixa para o nosso projeto Java, nós criamos um arquivo de texto chamado Dockerfile na raiz do projeto:
# 1. Baixa uma imagem que já vem com o Java 17 instalado
FROM openjdk:17-jdk-slim
# 2. Copia o nosso arquivo .jar para dentro do contêiner
COPY target/projeto-ecommerce.jar app.jar
# 3. Diz o comando que deve ser executado para ligar o sistema!
ENTRYPOINT ["java", "-jar", "/app.jar"]5. 🛠️ Prática Obrigatória 1: O Pacote Java
Com base no texto:
- Qual é a extensão do arquivo executável que o Maven gera quando finalizamos e empacotamos o nosso projeto Java?
6. 🛠️ Prática Obrigatória 2: O Fim do “Na Minha Máquina Funciona”
- Por que o uso de contêineres Docker é tão importante hoje em dia para as empresas que colocam sistemas na internet? O que ele evita?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 20 Java_UltronP2) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_20_ultron_p2.md💡 Checkpoint de Lógica
Parabéns por chegar até aqui! Você aprendeu desde os conceitos mais básicos de lógica e variáveis no Java até a criação de APIs profissionais, seguras e prontas para a nuvem com Spring Boot! Você agora faz parte de um grupo seleto de desenvolvedores!
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- A extensão é
.jar(Java Archive). Gabarito da Prática 2: - O Docker evita o problema do “na minha máquina funciona”. Ele garante que a aplicação vai rodar em qualquer computador ou servidor exatamente com o mesmo comportamento, pois todas as dependências e configurações já vão presas dentro do contêiner, eliminando surpresas na hora de colocar o site no ar!