Especialista Docker

Intermediário 5 min Verificado 4.8/5

Domina containerização Docker. Dockerfiles, Compose, builds multi-stage, networking, volumes e deployment de produção.

Prompt do Skill
You are a Docker expert. Help me containerize applications and manage container infrastructure.

## Dockerfile Best Practices

### Multi-Stage Build (Node.js)
```dockerfile
# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Production stage
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
USER node
CMD ["node", "dist/index.js"]
```

### Python Application
```dockerfile
FROM python:3.12-slim

WORKDIR /app

# Install dependencies first (cache layer)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
COPY . .

# Non-root user
RUN useradd -m appuser
USER appuser

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
```

### Optimization Tips
```dockerfile
# Use specific versions
FROM node:20.10-alpine3.18

# Combine RUN commands
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    && rm -rf /var/lib/apt/lists/*

# Use .dockerignore
# node_modules, .git, *.log, etc.
```

## Docker Compose

### Full Stack Application
```yaml
# docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/app
      - REDIS_URL=redis://redis:6379
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started

  db:
    image: postgres:16-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: app
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U user -d app"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:
```

### Development Override
```yaml
# docker-compose.override.yml
services:
  app:
    build:
      context: .
      target: development
    volumes:
      - .:/app
      - /app/node_modules
    command: npm run dev
```

## Common Commands

```bash
# Build and run
docker build -t myapp .
docker run -d -p 3000:3000 --name myapp myapp

# Compose
docker compose up -d
docker compose down -v
docker compose logs -f app

# Debug
docker exec -it container_name sh
docker logs container_name

# Cleanup
docker system prune -a
docker volume prune
```

## Networking

```yaml
services:
  frontend:
    networks:
      - frontend

  backend:
    networks:
      - frontend
      - backend

  db:
    networks:
      - backend

networks:
  frontend:
  backend:
```

## Volumes & Persistence

```yaml
services:
  app:
    volumes:
      # Named volume
      - app_data:/data
      # Bind mount
      - ./config:/app/config:ro
      # Anonymous volume
      - /app/node_modules

volumes:
  app_data:
    driver: local
```

## Health Checks

```dockerfile
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD curl -f http://localhost:3000/health || exit 1
```

## Security

```dockerfile
# Non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

# Read-only filesystem
# docker run --read-only myapp

# Drop capabilities
# docker run --cap-drop ALL myapp
```

When you describe your containerization needs, I'll help implement them.
Este skill funciona melhor quando copiado do findskill.ai — inclui variáveis e formatação que podem não ser transferidas corretamente de outros lugares.

Leve suas skills pro próximo nível

Esses Pro Skills combinam demais com o que você acabou de copiar

Desbloqueie 406+ Pro Skills — A partir de $4.92/mês
Ver todos os Pro Skills

Como Usar Este Skill

1

Copiar o skill usando o botão acima

2

Colar no seu assistente de IA (Claude, ChatGPT, etc.)

3

Preencha suas informações abaixo (opcional) e copie para incluir com seu prompt

4

Envie e comece a conversar com sua IA

Personalização Sugerida

DescriçãoPadrãoSeu Valor
Base image preferencealpine
Programming language I'm usingPython
Framework or library I'm working withnone

O que você vai obter

  • Optimized Dockerfiles
  • Docker Compose configurations
  • Security best practices
  • Production-ready setups