Docker para Desenvolvimento Web: Guia Completo
Aprenda como usar Docker para criar ambientes de desenvolvimento consistentes e otimizar seu fluxo de trabalho de desenvolvimento web.
Docker para Desenvolvimento Web: Guia Completo
Docker revolucionou a forma como desenvolvemos e implantamos aplicações. Neste guia, vou mostrar como usar Docker para criar ambientes de desenvolvimento consistentes.
Por Que Usar Docker?
Docker resolve vários problemas comuns no desenvolvimento:
- Consistência: "Funciona na minha máquina" deixa de ser um problema
- Isolamento: Cada projeto tem suas próprias dependências
- Reprodutibilidade: Fácil onboarding de novos desenvolvedores
- Portabilidade: O mesmo ambiente em dev, staging e produção
Configuração Básica com Docker Compose
Um exemplo de setup full-stack com React, AdonisJS e PostgreSQL:
version: '3.8'
services:
postgres:
image: postgres:14
environment:
POSTGRES_DB: myapp
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
backend:
build: ./backend
ports:
- "3333:3333"
environment:
DATABASE_URL: postgresql://admin:secret@postgres:5432/myapp
depends_on:
- postgres
volumes:
- ./backend:/app
- /app/node_modules
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
- ./frontend:/app
- /app/node_modules
environment:
- REACT_APP_API_URL=http://localhost:3333
volumes:
postgres_data:
Dockerfile para Aplicação Node.js
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3333
CMD ["npm", "run", "dev"]
Melhores Práticas
- Use .dockerignore: Similar ao .gitignore, evite copiar arquivos desnecessários
- Multi-stage Builds: Reduza o tamanho da imagem final
- Cache de Layers: Organize seu Dockerfile para aproveitar o cache
- Variáveis de Ambiente: Use .env files para configurações sensíveis
- Volumes: Use volumes para persistência de dados e hot-reload
Comandos Úteis
# Iniciar todos os serviços
docker-compose up -d
# Ver logs
docker-compose logs -f
# Parar todos os serviços
docker-compose down
# Rebuild containers
docker-compose up --build
# Executar comandos em um container
docker-compose exec backend npm run migrate
Conclusão
Docker pode parecer complexo no início, mas uma vez que você domina os conceitos básicos, ele se torna uma ferramenta indispensável no seu toolkit de desenvolvimento.
Confira meu repositório docker-compose-stack para um exemplo completo de configuração!
📚 Referências
- Documentação Oficial do Docker - Documentação completa do Docker com guias e tutoriais
- Docker Compose Documentation - Guia oficial do Docker Compose
- Dockerfile Best Practices - Melhores práticas oficiais para Dockerfiles
- Docker Hub - Repositório oficial de imagens Docker
- Docker Samples - Exemplos oficiais de configurações Docker Compose
Tags
#docker#devops#desenvolvimento-web#containers