Aula 15 - Docker e Deploy 🐳
Do Código Local para a Infraestrutura Moderna
Agenda de Hoje 📅
- O que é Containerização?
- Dockerfile para Go
- Multi-Stage Builds (Otimização)
- Docker Compose: Multi-Serviços
- CI/CD e Fluxo de Deploy
- Mini-Projeto: API no Container
1. Por que Docker + Go? 🦦
- Go gera binários estáticos.
- Docker garante bibliotecas de sistema e rede.
- Resultado: "Build once, run anywhere".
2. Dockerfile Inteligente 🏗️
# Estágio de Build
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o app
# Estágio Final (Lightweight)
FROM alpine:latest
COPY --from=builder /app/app .
CMD ["./app"]
3. Comparativo de Tamanho 📏
- Imagem com Go SDK: ~300MB.
- Imagem Final (Alpine): ~12MB.
- Benefício: Deploy mais rápido e seguro.
4. Orquestração com Compose 🎼
5. Fluxo de Vida 📊
graph LR
Code[Go Code] -->|Build| Bin[Binary]
Bin -->|Containerize| Img[Docker Image]
Img -->|Push| Reg[Registry]
Reg -->|Pull| Prod[Production]
6. Mini-Projeto: API no Container 🚀
- Criar
Dockerfile. - Rodar
docker build -t minha-api .. - Rodar
docker run -p 8080:8080 minha-api. - Testar via Postman.
Resumo da Aula ✅
- Multi-stage build é obrigatório para eficiência.
- Docker Compose facilita o setup do desenvolvedor.
- Variáveis de ambiente são a forma correta de configurar.
Próxima Aula: Projeto Final 🏆
- Juntando tudo.
- Desafio Completo.
Dúvidas? 🤔
"Um container é uma promessa de que o código vai rodar."