skills/devops/dockerize/SKILL.md
Generar Dockerfile optimizado. Activar cuando el usuario quiera crear contenedor, generar imagen Docker, configurar Docker Compose, contenerizar aplicacion o crear un Dockerfile multi-stage.
npx skillsauth add 686f6c61/alfred-dev dockerizeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Este skill genera un Dockerfile siguiendo las mejores prácticas de la industria: multi-stage builds para reducir el tamaño de la imagen final, ejecución con usuario no-root para seguridad, capas optimizadas para aprovechar la caché y health checks para la orquestación.
Un buen Dockerfile no es solo "que funcione", sino que sea seguro, rápido de construir, pequeño y mantenible.
Detectar el stack del proyecto. Consultar el stack detectado en la configuración de Alfred para seleccionar la imagen base adecuada. Identificar el lenguaje, framework y runtime necesarios:
node:XX-alpine o node:XX-slim.python:XX-slim o python:XX-alpine.rust:XX para build y debian:XX-slim o gcr.io/distroless para runtime.golang:XX para build y scratch o gcr.io/distroless para runtime.Diseñar multi-stage build. Separar la fase de construcción de la de ejecución:
# Fase de build: incluye herramientas de compilación
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
# Fase de runtime: solo lo necesario para ejecutar
FROM node:20-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
Optimizar el orden de capas para caché. Las capas que cambian menos van primero:
Esto asegura que un cambio en el código no invalida la caché de dependencias.
Configurar usuario no-root. Nunca ejecutar la aplicación como root dentro del contenedor:
RUN addgroup --system app && adduser --system --ingroup app app
USER app
Añadir health check. Permitir al orquestador (Docker Compose, Kubernetes) verificar que la aplicación está sana:
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3000/health || exit 1
Generar .dockerignore. Excluir todo lo que no es necesario en la imagen:
node_modules
.git
.env
*.md
tests/
.github/
Configurar variables de entorno. Usar ENV para valores por defecto y documentar qué variables se deben pasar en runtime con ARG o -e.
Verificar la imagen resultante. Comprobar el tamaño final, que no incluye herramientas de build innecesarias y que arranca correctamente.
latest como tag de imagen base. Siempre fijar la versión concreta (por ejemplo, node:20.11-alpine) para garantizar builds reproducibles.node_modules al contenedor desde el host. Instalar las dependencias dentro del contenedor para evitar incompatibilidades de plataforma y binarios nativos..env, claves privadas, tokens). Los secretos se pasan en runtime como variables de entorno o mediante sistemas de gestión de secretos.testing
Abrir y operar el companion visual de Selina para elegir una direccion de estilo en proyectos con interfaz. Skill manual: levanta un servidor local y escribe artefactos visuales.
tools
Configurar un repositorio GitHub con branch protection, templates y labels
tools
Crear releases con versionado semantico, notas y artefactos
testing
Crear pull requests completas con descripcion, labels y reviewers