Pular para conteúdo

Aula 15 - Docker e Deploy 🐳

Do Código Local para a Infraestrutura Moderna


Agenda de Hoje 📅

  1. O que é Containerização?
  2. Dockerfile para Go
  3. Multi-Stage Builds (Otimização)
  4. Docker Compose: Multi-Serviços
  5. CI/CD e Fluxo de Deploy
  6. 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 🎼

services:
  api:
    build: .
    ports: ["8080:8080"]
    depends_on: [db]
  db:
    image: postgres:alpine

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."