Cómo generar un Dockerfile
- Elige tu lenguaje/framework: Node.js, Python, Go, PHP o un sitio estático servido por Nginx.
- Activa build multi-etapa, usuario no-root y una directiva HEALTHCHECK según necesites.
- Pulsa Generar, aparece debajo un Dockerfile completo, listo para copiar.
- Cambia “Qué archivo mostrar” a
docker-compose.ymlo.dockerignorey pulsa Generar de nuevo para ver el archivo correspondiente con las mismas opciones. - Guarda cada archivo con su nombre real (
Dockerfile,docker-compose.yml,.dockerignore, los dos primeros sin extensión) en la raíz de tu proyecto.
Por qué un generador visual de Dockerfile
Un Dockerfile funcional para una app real es más que una línea FROM y un CMD, acertar de verdad con uno listo para producción significa elegir una imagen base sensata, ordenar los pasos COPY/RUN para que la caché de capas de Docker realmente ayude, separar las herramientas de compilación de lo que se ejecuta en producción, y no ejecutar el contenedor como root por defecto. La mayoría de la gente parte de una entrada de blog de hace años o de un ejemplo poco relacionado y lo parchea hasta que compila, que es exactamente cómo acaban en producción imágenes sobredimensionadas, que corren como root y sin caché. Esta herramienta en cambio compone cada Dockerfile a partir de un pequeño conjunto de patrones bien conocidos y verificados para el lenguaje que elegiste, combinando solo las funciones que realmente pediste.
Qué genera realmente cada preajuste
- Node.js, una etapa de compilación ejecuta
npm ci, compila y luegonpm prune --production; la etapa de ejecución copia solonode_modules, el resultado compilado ypackage*.json, así que la huella del compilador/dependencias de desarrollo nunca llega a la imagen final. El modo no-root usa el usuarionodeque ya trae la propia imagen Alpine oficial de Node. - Python, una etapa de compilación crea un entorno virtual e instala
requirements.txten él; la etapa de ejecución copia ese entorno virtual entero. El modo no-root crea unappuserdedicado (elpython:slimbasado en Debian no tiene un usuario no-root incorporado). - Go, una etapa de compilación compila un binario totalmente estático (
CGO_ENABLED=0) que se copia a una imagen de ejecución Alpine mínima con nada más que certificados CA añadidos, manteniendo diminuta la imagen final. - PHP, una etapa de compilación ejecuta
composer installen la imagen oficial de Composer; la etapa de ejecución (php:apache) copia solo la carpetavendor/resultante, nunca el propio binario de Composer. - Sitio estático, una etapa de compilación de Node ejecuta el propio script de compilación de tu app (Vite, React, Vue, etc.) y la carpeta
dist/resultante se copia directamente a una imagen de Nginx sin dejar ningún runtime de Node atrás.
Seguridad: ejecutar como no-root
Cada preajuste puede ejecutarse como un usuario sin privilegios en lugar de root, una buena práctica genuina, no una casilla por marcar por marcar, ya que un escape de contenedor desde un proceso root dentro del contenedor es materialmente peor que uno desde un proceso no-root. Para PHP (Apache) y el sitio estático (Nginx), hacerlo correctamente también significa mover el puerto de escucha a 8080, ya que solo root puede vincular puertos por debajo de 1024 en Linux, esta herramienta gestiona ese cambio automáticamente y mantiene coherentes EXPOSE, el HEALTHCHECK y el mapeo de puertos de docker-compose.yml entre sí.
Sin ida y vuelta al servidor, sin cuenta
Cada fragmento se genera con JavaScript normal ejecutado en tu navegador, nada se sube, no hace falta ninguna cuenta, y esta herramienta no tiene acceso a un demonio Docker real para construir o ejecutar las imágenes que describe. Eso también la hace honesta sobre sus propios límites: es un generador de sintaxis, no un validador. Ejecuta siempre docker build localmente y prueba la imagen antes de publicarla.
Usos habituales
- Preparar el primer Dockerfile de un nuevo servicio Node/Python/Go/PHP en segundos en lugar de copiar y pegar uno de un proyecto sin relación.
- Añadir un build multi-etapa correcto a una app existente que actualmente envía toda su cadena de herramientas de compilación en producción.
- Blindar un contenedor existente para que se ejecute como no-root sin romperlo, especialmente la sutileza del cambio de puerto para Apache/Nginx.
- Generar un
docker-compose.ymlcorrespondiente para desarrollo local junto al propio Dockerfile. - Combinarlo con el Generador de Configuración Nginx y .htaccess cuando el contenedor también necesite su propia configuración de enrutado/cabeceras de seguridad del servidor web.
- Preparar el resto de un repositorio nuevo al mismo tiempo, mira el Generador de .gitignore para las propias reglas de exclusión del proyecto.
- Convertir la estructura de un
docker-compose.ymlgenerado a JSON para un script o una página de documentación, mira el Conversor de YAML a JSON. - Validar o reformatear un
docker-compose.ymlescrito a mano o una configuración JSON relacionada con Dockerfile, mira el Formateador y Validador JSON. - Programar la construcción de un contenedor o una tarea de copia de seguridad junto a la app que ejecuta, mira el Generador de Expresiones Cron.

