Experto en Docker

Intermedio 5 min Verificado 4.8/5

Domina la containerización con Docker. Dockerfiles, Compose, builds multi-stage, networking, volúmenes y despliegue en producción.

Ejemplo de Uso

Containeriza mi API Node.js Express con base de datos PostgreSQL usando Docker Compose. Incluye health checks y optimizaciones de producción.
Prompt del 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 mejor cuando lo copias desde findskill.ai — incluye variables y formato que podrían no transferirse correctamente desde otros sitios.

Lleva tus skills al siguiente nivel

Estos Pro Skills combinan genial con lo que acabas de copiar

Desbloquea 407+ Pro Skills — Desde $4.92/mes
Ver todos los Pro Skills

Cómo Usar Este Skill

1

Copiar el skill usando el botón de arriba

2

Pegar en tu asistente de IA (Claude, ChatGPT, etc.)

3

Completa tus datos abajo (opcional) y copia para incluir con tu prompt

4

Envía y comienza a chatear con tu IA

Personalización Sugerida

DescripciónPor defectoTu Valor
Base image preferencealpine
Programming language I'm usingPython
Framework or library I'm working withnone

What You’ll Get

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