Genera archivos Dockerfile listos para producción para Node.js, Python, Go, Java y Nginx con compilaciones en varias etapas y un orden optimizado de las capas.
# Build stage FROM node:20-alpine AS builder WORKDIR /app # Copy dependency manifests first to leverage Docker layer cache COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Production stage FROM node:20-alpine WORKDIR /app RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules ENV NODE_ENV=production EXPOSE 3000 CMD ["node", "dist/index.js"]
.git .gitignore *.md .env .env.* .DS_Store Thumbs.db node_modules npm-debug.log* .npm dist build coverage .nyc_output .eslintcache
Un Dockerfile es un archivo de texto que define cómo compilar una imagen de contenedor. El orden de las instrucciones es importante para la eficiencia de la caché: las dependencias se instalan antes de copiar el código fuente, de modo que Docker reutiliza la capa almacenada en caché cuando solo cambia el código de la aplicación, y no cuando cambian las dependencias.
Elige un idioma y una imagen base, activa o desactiva (si lo deseas) las compilaciones en varias etapas, configura los comandos de compilación e inicio, y añade las variables de entorno que necesites. El generador garantiza el orden de capas recomendado y, por defecto, crea un usuario que no sea root por motivos de seguridad.
Las compilaciones en varias etapas generan una imagen final más pequeña al separar el entorno de compilación del entorno de ejecución. En la etapa de compilación se compila la aplicación, y solo el artefacto compilado se copia en la etapa de ejecución optimizada. Esto resulta especialmente eficaz para aplicaciones en Go y Java.