DevForge
Docker
Plataforma de containerização que permite empacotar aplicações e dependências em contêineres isolados, garantindo portabilidade e consistência em qualquer ambiente.
⚡ Instalação do Docker
curl -fsSL https://rafaelferreira2312.github.io/devforge/scripts/docker/install-docker.sh | bashwinget install Docker.DockerDesktopbrew install --cask docker Após instalação, execute docker --version para verificar.
🐳 Comandos Essenciais Docker
📦 Gerenciamento de Containers
docker run -d -p 80:80 --name nginx nginx:alpinedocker ps -adocker stop nginxdocker start nginxdocker rm -f nginx📦 Imagens e Logs
docker imagesdocker pull ubuntu:22.04docker logs -f nginxdocker exec -it nginx /bin/bashdocker rmi nginx:alpineDockerfile - Exemplos
🐍 Python App
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
🟢 Node.js App
FROM node:20-alpine
WORKDIR /app
COPY package*.json .
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
🐘 PHP + Nginx
FROM php:8.3-fpm-alpine
RUN docker-php-ext-install pdo pdo_mysql mysqli
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html
COPY . .
CMD ["php-fpm"]
Docker Compose
Exemplo: WordPress + MySQL + phpMyAdmin
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db_data:/var/lib/mysql
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: db
PMA_PORT: 3306
volumes:
db_data:
wp_data:
docker-compose up -ddocker-compose down -vdocker-compose logs -fdocker-compose ps🚀 Comandos Avançados
docker build -t minha-app:latest .docker tag minha-app:latest meuuser/minha-app:v1docker push meuuser/minha-app:v1docker network create minha-rededocker volume create meu-volumedocker system prune -a -fBoas Práticas Docker
🔧 Troubleshooting Docker
❌ Erro: "docker: permission denied"
Causa: Usuário não está no grupo docker.
Solução: sudo usermod -aG docker $USER && newgrp docker
⚠️ Erro: "port is already allocated"
Causa: Porta já em uso por outro container ou processo.
Solução: docker ps para listar containers e docker stop ou mapeie porta diferente.
🐘 Erro: "No space left on device"
Causa: Docker consumiu todo espaço em disco.
Solução: docker system prune -a -f && docker volume prune -f
Diagnóstico automático Docker:
docker --version && docker-compose --version && docker info && docker ps && echo "---" && docker system df
Este comando verifica versão do Docker, Docker Compose, informações do sistema, containers rodando e uso de disco.
⚠️ IMPORTANTE - Como executar os scripts corretamente
Os scripts abaixo funcionam em Windows, Linux e macOS. Siga as instruções específicas do seu sistema:
# ERRO COMUM: "arquivo não assinado" ou "execução de scripts desabilitada"
# SOLUÇÃO 1: Executar com bypass (recomendado)
powershell -ExecutionPolicy Bypass -File "C:\caminho\script.ps1"
# SOLUÇÃO 2: Baixar e executar direto (pode ter erro de codificação)
powershell -ExecutionPolicy Bypass -Command "iex (irm https://.../script.ps1)"
# SOLUÇÃO 3: Habilitar execução permanentemente (como Administrador)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# Se houver erros de acentuação (caracteres estranhos): O script ainda funciona, apenas a saída visual pode ficar distorcida
# ERRO COMUM: "permission denied" ou "comando não encontrado"
# SOLUÇÃO 1: Dar permissão de execução (obrigatório)
chmod +x script.sh
# SOLUÇÃO 2: Executar o script
./script.sh
# SOLUÇÃO 3: Executar via curl (baixar e executar direto)
curl -fsSL https://.../script.sh | bash
# SOLUÇÃO 4: Se der erro de permissão, use sudo (cuidado!)
sudo chmod +x script.sh && sudo ./script.sh
# Se houver erros de permissão: Execute 'ls -la script.sh' para verificar permissões atuais
# ERRO COMUM: "permission denied" ou "operation not permitted"
# SOLUÇÃO 1: Dar permissão de execução
chmod +x script.sh
# SOLUÇÃO 2: Executar o script
./script.sh
# SOLUÇÃO 3: Se der erro de "quarentena" (arquivo baixado da internet)
xattr -d com.apple.quarantine script.sh
# SOLUÇÃO 4: Executar via curl
curl -fsSL https://.../script.sh | bash
# Se erro persistir: Vá em Preferências do Sistema → Segurança e Privacidade → Permitir execução
Dicas importantes:
• Windows: Se aparecerem caracteres estranhos (ex: "�" ou "ção"), ignore - o script funciona normalmente. Para evitar, baixe o script localmente e execute.
• Linux/macOS: Sempre use chmod +x antes de executar scripts baixados.
• WSL (Windows): Siga as instruções do Linux, mas certifique-se de que o script está dentro do sistema de arquivos do Linux (não no /mnt/c/).
📜 Scripts prontos
Scripts verificados no Ubuntu 22.04/24.04, Debian 12, macOS 13+ e Windows 10/11.
❓ Perguntas frequentes - Docker
Diferença entre Docker e Virtual Machine?
Docker compartilha o kernel do host, é mais leve e rápido. VMs tem kernel próprio, mais isoladas mas pesadas.
Como persistir dados em containers?
Use volumes (docker volume create) ou bind mounts (-v /host/path:/container/path).
Como reduzir tamanho da imagem Docker?
Use imagens alpine/slim, multi-stage builds, combine RUN commands e use .dockerignore.
Como monitorar containers em produção?
Use docker stats, Prometheus + cAdvisor, ou ferramentas como Portainer e Docker Scout.