Pensé que solo quería compartir esto. Así que estoy probando la creación de una imagen/contenedor acoplable con una aplicación nodejs usando Dockerfile. Todo transcurrió sin problemas, hasta que intenté agregar el archivo .dockerignore, donde enumeré los siguientes archivos, esperando que no se copiaran en la imagen de la ventana acoplable:
node_modules dockerignore DockerfileY aquí está mi Dockerfile:
FROM node:latest WORKDIR /app ADD . . RUN npm install CMD node index.js Así que deseché y reconstruí mi imagen con el Dockerfile existente y el nuevo archivo .dockerignore. Después de la creación, ejecuté docker run -it --entrypoint sh <image name> para verificar si esos archivos/carpetas ya no aparecen.
Dockerfile y .dockerignore se han ido. Pero la carpeta node_modules todavía está allí.
Me tomó un tiempo "darme cuenta" de que TAL VEZ la carpeta node_modules en la imagen se crea mediante el paso de npm install , no la carpeta copiada del host de todos modos.
¿Tengo razón?
Así que obtuve la respuesta basada en los comentarios de tkausl y David Maze (¡gracias chicos!).
Los node_modules dentro de la imagen se generan a partir del paso 'npm install' de Dockerfile.
Y en cuanto a la pregunta:
si
.dockerignoreno incluyenode_modules, ¿Dockerfile habría sobrescritonode_modulesde todos modos? Entonces, ¿por qué molestarse en ponernode_modulesdentro del archivo .dockerignore?
el comentario que recibí fue que si omití node_modules del archivo .dockerignore, entonces el proceso de compilación de docker se habría ralentizado debido a la copia innecesaria de node_modules , ADEMÁS, la imagen habría sido más grande.
Por lo tanto, lo prudente es mantener node_modules dentro del archivo .dockerignore para lograr una mayor eficiencia en el proceso de docker build .
ACTUALIZACIÓN: intenté ejecutar el escenario con node_modules eliminado del archivo .dockerignore, y la imagen muestra 940 MB, mientras creaba la imagen con node_modules dentro del archivo .dockerignore , aunque el proceso puede ser más eficiente: la imagen de salida es de 942 MB (2 MB más grande).