From alfred-dev
Generates optimized multi-stage Dockerfiles for Node.js, Python, Rust, Go apps with non-root users, layer caching, health checks, and .dockerignore. Use for containerizing apps or Docker Compose setup.
npx claudepluginhub 686f6c61/alfred-dev --plugin alfred-devThis skill uses the workspace's default tool permissions.
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.
Generates optimized multi-stage Dockerfiles, .dockerignore, for Node.js, Python, Go, Java apps with security hardening, layer caching, validation, and error fixes.
Creates optimized Docker containers using multi-stage builds, security best practices, and minimal image sizes. Use for containerizing apps, Dockerfiles, image optimization, Docker Compose services.
Generates production-ready multi-stage Dockerfiles for Node, Python, Go projects with layer caching, security hardening, non-root users, .dockerignore, and optional docker-compose.yml.
Share bugs, ideas, or general feedback.
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.