CursosEmpresasBlogLiveConfPrecios

Entendiendo el cache de layers para estructurar correctamente tus imágenes

Clase 18 de 25 • Fundamentos de Docker 2018

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Qué aprenderás sobre Docker

    Qué aprenderás sobre Docker

    03:11 min
  • 2
    Problemáticas del desarrollo de software profesional

    Problemáticas del desarrollo de software profesional

    06:49 min
  • 3
    Qué es Docker: containarization vs virtualization

    Qué es Docker: containarization vs virtualization

    00:00 min

Primeros pasos

  • 4
    Cómo instalar Docker

    Cómo instalar Docker

    10:13 min
  • 5
    Primeros pasos: Hola mundo y Docker Engine

    Primeros pasos: Hola mundo y Docker Engine

    03:44 min
  • 6
    Contenedores

    Contenedores

    04:54 min

Aprendiendo a usar los contenedores

  • 7
    Explorar el estado de docker

    Explorar el estado de docker

    08:42 min
  • 8
    El modo interactivo

    El modo interactivo

    08:04 min
  • 9
    Ciclo de vida de un contenedor

    Ciclo de vida de un contenedor

    07:34 min
  • 10
    Exponiendo contenedores al mundo exterior

    Exponiendo contenedores al mundo exterior

    08:20 min
  • 11
    Datos en Docker

    Datos en Docker

    10:34 min
  • 12
    Datos con Docker: Volumes

    Datos con Docker: Volumes

    08:51 min

Imágenes

  • 13
    Conceptos fundamentales de Docker: imágenes

    Conceptos fundamentales de Docker: imágenes

    09:54 min
  • 14
    Construyendo nuestras propias imágenes

    Construyendo nuestras propias imágenes

    09:34 min
  • 15
    Comprendiendo el sistema de capas

    Comprendiendo el sistema de capas

    07:54 min

Desarrollando con Docker

  • 16
    Usando docker para desarrollar aplicaciones

    Usando docker para desarrollar aplicaciones

    06:57 min
  • 17
    Reto

    Reto

    00:31 min
  • 18
    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    Viendo ahora
  • 19
    Docker networking: colaboración entre contenedores

    Docker networking: colaboración entre contenedores

    08:21 min

Docker compose

  • 20
    Docker-compose: la herramienta todo-en-uno

    Docker-compose: la herramienta todo-en-uno

    08:38 min
  • 21
    Trabajando con docker-compose

    Trabajando con docker-compose

    06:41 min
  • 22
    Docker-compose como herramienta de desarrollo

    Docker-compose como herramienta de desarrollo

    14:53 min

Docker Avanzado

  • 23
    Conceptos para imágenes productivas

    Conceptos para imágenes productivas

    11:17 min
  • 24
    Manejando docker desde un contenedor

    Manejando docker desde un contenedor

    09:41 min

Cierre

  • 25
    Cierre del curso

    Cierre del curso

    01:19 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        TeamQA

        TeamQA

        student•
        hace 6 años

        si alguien tiene un problema con este tipo error [nodemon] starting node index.js internal/modules/cjs/loader.js:638 throw err; ^ la solucion que realice fueron las siguientes instrucciones 1 - npm install 2 - npm audit fix 3 - docker build -t ubuntu:platzi . 4 - docker run --rm -p 3000:3000 -v ${PWD}:/usr/src platziapp esta manera me funciono el servicio

          Julio Hernandez Gorocica

          Julio Hernandez Gorocica

          student•
          hace 6 años

          Mismo error, si me sirvió. ¡Muchas gracias!

          Moisés Cedeño

          Moisés Cedeño

          student•
          hace 6 años

          Muchas gracias, me funcionó con tus pasos.

        Carlos Andrés Charris S

        Carlos Andrés Charris S

        student•
        hace 7 años

        para mejorar el cache y la velocidad de construcción de nuestra imagen es recomendable saber organizar y distribuir el comando copy

        FROM node:10 COPY ["package.json", "package-lock.json", "/usr/src/"] # [<ubicacion de los archivos a copiar>, <destino donde van a quedar los archivos copiados>] WORKDIR /usr/src # es similar al comando cd, WORKDIR <entrar en la siguiente ruta> RUN npm install # RUN ejecuta el comando npm install COPY [".", "/usr/src/"] # [<ubicacion de los archivos a copiar>, <destino donde van a quedar los archivos copiados>] EXPOSE 3000 # le indica al contenedor el puerto por el cual va a salir o exponer el contenedor, es el mismo puerto por donde esta escuchando node CMD ["npx","nodemon", "index.js"] # ejecuta el comando node index.js el cual levanta el servidor de express # npx es una herramienta de cli que nos permite ejecutar paquetes de npm de forma mucho más sencilla # nodemon es el paquete que nos va apermitir bajr y subir el server de manera automatica apenas exita un cambio en los archivos # index.js es el archivo que levanta el servidor de express
        Leonidas Menendez

        Leonidas Menendez

        student•
        hace 7 años

        El error: Error: Cannot find module 'express’ U otro error de dependencias lo resolvi asi:

        Al momento de bajar el proyecto, debido al gitignore el proyecto no tenia la carpetas de los modulos de node. Debido a esto cuando se ejecuta el contenedor la primera vez y al no haber cambios en el package.json y package-lock.json, nunca se ejecutara el npm install.

        Puesto que lo que hize fue correr de manera interativa el contenedor -it Esto me permitio ejecutar el comando npm install y debido a que el volumen esta apunto a la carpeta del codigo fuente del host se engeraran todos los modulos necesarios. Una vez esto, se puede descartar dicho contender y ejecutar de nuevo el contenedor con la opcion --rm (para borrar), no iterativo (sin la opcion it)

        Saludos

          Mau Munguia

          Mau Munguia

          student•
          hace 7 años

          Gracias me sirvió mucho, sólo para poner los pasos.

          Primero ejecuten:

          sudo docker run -it --rm -p 3000:3000 -v /ruta/donde/estan/docker:/usr/src platziapp bash

          Estando dentro del bash:

          npm install exit

          Y por último ejecuten el comando que pone el profe:

          sudo docker run --rm -p 3000:3000 -v /ruta/donde/estan/docker:/usr/src platziapp

          De nuevo, muchas gracias

          Jorge Cardoso

          Jorge Cardoso

          student•
          hace 6 años

          Gracias por la clarificacion @code57 and @vinsmokemau por los pasos en code markup. Tengo algunas perguntas:

          1. Que exactamente se esta removiendo con la flag --rm ?

          2. Entiendo que el -p 3000:3000 esta mapping los puertos fuera de docker. Pero no entiendo que tiene que ver el directorio /usr/src en todo esto. Que es lo que pasa ahi?

          3. En la parte de -v /ruta/donde/estan/docker:/usr/src platziapp despues de el : se refiere a algun directorio magico dentro de Docker? (/usr/src)

        Oscar Rodrigo Leon Mojica

        Oscar Rodrigo Leon Mojica

        student•
        hace 6 años

        si al correr el contenedor con un volumen tipo bind te dio este error

        vagrant@lion-server:~/platzi-docker$ docker run --rm -p 3000:3000 -v /home/vagrant/platzi-docker:/usr/src platziapp internal/modules/cjs/loader.js:638 throw err; ^ Error: Cannot find module '/root/.npm/_npx/1/lib/node_modules/nodemon/bin/postinstall' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) [nodemon] 2.0.2 [nodemon] to restart at any time, enter `rs` [nodemon] watching dir(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js` internal/modules/cjs/loader.js:638 throw err; ^ Error: Cannot find module 'express' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object.<anonymous> (/usr/src/index.js:1:17) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3)

        es porque no se instalaron las dependencias de node antes ejecuta el contenedor, corre el comando:

        npm install

        parece que al ejecutar el contenedo con -v sobreescrie el conteniido de la carpeta /usr/src con lo que se encuentre en la carpeta host

          JOSE LUIS AVALOS IZAGUIRRE

          JOSE LUIS AVALOS IZAGUIRRE

          student•
          hace 6 años

          Hola disculpa, me podrias indicar en que momento exactamente correr el comando npm install, tengo el mismo error que mencionas en tu comentario pero no se exactamente en que momento correr dico comando, gracias de antemano por tu ayuda.

          Oscar Rodrigo Leon Mojica

          Oscar Rodrigo Leon Mojica

          student•
          hace 6 años

          @joseluisavalosizaguirre ejecuta el comando antes de correr el contenedor

        Kirlled Anderson Araque

        Kirlled Anderson Araque

        student•
        hace 7 años

        Si están en windows y tienen problemas con la recarga automática por parte de nodemon usen --legacy-watch
        Dockerfile:

        CMD ["npx", "nodemon", "--legacy-watch", "index.js"]
          Freddy Dagner Encinas Manjon

          Freddy Dagner Encinas Manjon

          student•
          hace 7 años

          Estoy corriendo docker sobre windows estoy ejecutando sobre Linux container. La ultima parte no me funciona, cuando hago el cambio no se reinicia el container. Mi configuracion es la siguiente: ++DOCKER FILE++ FROM node:10 COPY ["package.json", "package-lock.json", "/usr/src/"] WORKDIR /usr/src RUN npm install COPY [".", "/usr/src/"] EXPOSE 3000 CMD ["npx", "nodemon", "index.js"]

          El monitor no detecta el cambio

          D:\DoKR\EJEMPLO1>docker run --rm -p 3000:3000 -v D:\DoKR\EJEMPLO1:\usr\src platziapp [nodemon] 1.18.6 [nodemon] to restart at any time, enter rs [nodemon] watching: . [nodemon] starting node index.js Server listening on port 3000!

          HELP ME!!!!

          Freddy Dagner Encinas Manjon

          Freddy Dagner Encinas Manjon

          student•
          hace 7 años

          A pesar de ello no funciona...

        Creck Brayan Mauri Pastor Paredes

        Creck Brayan Mauri Pastor Paredes

        student•
        hace 7 años

        Para los que tengan el error
        npm ERR! code E404
        npm ERR! 404 Not Found: flatmap-stream@0.1.1
        solo cambien en su package.json el nodemon a latest

        "devDependencies": { ... "nodemon": "latest" }
          Leylon Ocaña Sanchez

          Leylon Ocaña Sanchez

          student•
          hace 7 años

          Muchas gracias, por el aporte ya no tengo problemas.

        Emanuel Alejandro Mamani

        Emanuel Alejandro Mamani

        student•
        hace 6 años

        Para la gente que use Windows pueden reemplazar

        C:/ruta/donde/estan/docker por ${PWD}

        es una variable global que se puede usar en el shell de Windows para no estar siempre colocando el directorio completo.

        quedaria algo asi

        docker run --rm -p 3000:3000 -v ${PWD}:/usr/src platziapp

        Espero les sirva!

        Luis Felipe Vanegas Pill

        Luis Felipe Vanegas Pill

        student•
        hace 6 años

        Tuve el error

        C:\docker&gt;docker run --rm -p 3000:3000 -v /c/docker:/usr/src platziapp internal/modules/cjs/loader.js:638 throw err; ^ Error: Cannot find module '/root/.npm/_npx/1/lib/node_modules/nodemon/bin/postinstall' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) [nodemon] 2.0.2 [nodemon] to restart at any time, enter `rs` [nodemon] watching dir(s): *.* [nodemon] watching extensions: js,mjs,json [nodemon] starting `node index.js` internal/modules/cjs/loader.js:638 throw err; ^ Error: Cannot find module 'express' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object.&lt;anonymous&gt; (/usr/src/index.js:1:17) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) [nodemon] app crashed - waiting for file changes before starting...``` luego ejecute

        docker run --rm -p 3000:3000 -v /c/docker:/usr/src platziapp npm install

        seguia sin funcionar pero la consola sugeria utilizar el audit fix y con ello si funciono

        C:\docker>docker run --rm -p 3000:3000 -v /c/docker:/usr/src platziapp npm audit fixnpm + mongodb@3.5.5 added 2 packages from 2 contributors, removed 3 packages and updated 9 packages in 37.451s WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents): npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename ‘/usr/src/node_modules/.staging/fsevents-8761505b/node_modules/signal-exit’ -> ‘/usr/src/node_modules/.staging/signal-exit-a0d7e7f7’

        fixed 135 of 137 vulnerabilities in 2399 scanned packages 1 vulnerability required manual review and could not be updated 1 package update for 1 vulnerability involved breaking changes (use npm audit fix --force to install breaking changes; or refer to npm audit for steps to fix these manually)

        Y ahora si funciono!!!! Espero te sea útil

        C:\docker>docker run --rm -p 3000:3000 -v /c/docker:/usr/src platziapp [nodemon] 1.18.6 [nodemon] to restart at any time, enter rs [nodemon] watching: . [nodemon] starting node index.js Server listening on port 3000!

          Raúl Bauzan Robles

          Raúl Bauzan Robles

          student•
          hace 6 años

          A mi me ha funcionado con C:\docker>docker run --rm -p 3000:3000 -v /c/docker:/usr/src platziapp npm audit fix npm + mongodb@3.5.5

          Rodolfo Ferreira Casetti

          Rodolfo Ferreira Casetti

          student•
          hace 5 años

          De todos los comentarios éste fue el que solucionó el problema. Gracias!

        Axel David Espinosa Meneses

        Axel David Espinosa Meneses

        student•
        hace 6 años

        En esa clase me surgió el mismo problema de las dependencias como a todos, lo que yo realice fue que al momento de correr el contenedor, en lugar de instalar directamente con npm install las librerias inicie el bash.

        docker run -p 3000:3000 -v /your/directory:/usr/src -it nodeapp bash

        Una vez dentro del contenedor corrí el comando

        npm install

        Me salí del contenedor, como al momento de salirse del contenedor se apaga. Lo inicie con:

        docker restart [id de mi contenedor]

        ahora entre de nuevo a mi contenedor usando el comando

        docker exec -it [id-mi-contenedor] bash

        dentro del bash lo que hice fue correr nodemon:

        npx nodemon index.js

        Y ahora el contenedor ya esta escuchando por cualquier cambio.

          Jhonatan Holguín

          Jhonatan Holguín

          student•
          hace 6 años

          Gracias compañero funciono.

        Christian Ruiz

        Christian Ruiz

        student•
        hace 6 años

        Windows 10

        Docker file

        FROM node:10 COPY ["package.json","package-lock.json", "/usr/src/"] # [<ubicacion de los archivos a copiar>, <destino donde van a quedar los archivos copiados>] WORKDIR /usr/src # es similar al comando cd, WORKDIR <entrar en la siguiente ruta> RUN npm install --force # RUN ejecuta el comando npm install RUN npm audit fix COPY [".", "/usr/src/"] # [<ubicacion de los archivos a copiar>, <destino donde van a quedar los archivos copiados>] EXPOSE 3000 # le indica al contenedor el puerto por el cual va a salir o exponer el contenedor, es el mismo puerto por donde esta escuchando node CMD ["npx", "nodemon", "--legacy-watch", "index.js"] # ejecuta el comando node index.js el cual levanta el servidor de express # npx es una herramienta de cli que nos permite ejecutar paquetes de npm de forma mucho más sencilla # nodemon es el paquete que nos va apermitir bajr y subir el server de manera automatica apenas exita un cambio en los archivos # index.js es el archivo que levanta el servidor de express

        Comando:

        PS D:\Proyectos\DockerApp> docker build -t platziapp -f Dockerfile .

        Siguiente comando:

        PS D:\Proyectos\DockerApp> docker run --rm -p 3000:3000 -v D:\Proyectos\DockerApp:/usr/src platziapp
        José Emanuel Osorio Vázquez

        José Emanuel Osorio Vázquez

        student•
        hace 6 años

        Docker en Windows Si no recarga nodemon automáticamente, usen la solución de Christian

        En la parte de: CMD ["npx", "nodemon", "index.js"] usen:

        CMD ["npx", "nodemon", "--legacy-watch", "index.js"]
          Super team

          Super team

          student•
          hace 6 años

          Busque por todos lados y esta era la parte que estaba fallando :')

          Ivan Dario Quintero Rios

          Ivan Dario Quintero Rios

          student•
          hace 5 años

          Aun no me funciona la recarga ... alguno otra idea ?

        Hinder Adrian Alvarez Perlaza

        Hinder Adrian Alvarez Perlaza

        student•
        hace 6 años

        El caso del vídeo (en donde de usa nodemon) funciona, pero, en el caso de una aplicación con Java que está en un container com archivos .properties y .xml de configuración... ¿Cómo hago para que se actualice la imagen en tiempo real si cambio algo en la configuración de alguno de esos archivos?

          William Schnaider Torres Bermon

          William Schnaider Torres Bermon

          student•
          hace 6 años

          Para estos casos lo que he realizado es integrar Jenkins para construir un CI/CD. De tal modo que los cambios realizados sobre el repositorio de la aplicación activen la compilación y despliegue del código.

          No es una solución propíamente del contexto Docker pero en la CI/CD todas las aplicaciones Java se encuentran dockerizadas.

        Nicolás Neira Navarrete

        Nicolás Neira Navarrete

        student•
        hace 6 años

        pro tip: por si les falla en el paso de hacer el vinculo con el pc host, ejecuten 'npm install' en el path del proyecto.

        Usuario anónimo

        Usuario anónimo

        user•
        hace 6 años

        en linux: ubunto se inicia todo bien pero cada que hago cambios en el index la información no se actualiza y en el navegador no cambia hasta que no corro un build nuevo y ejecuto el run. yo utilizo una instancia de aws de ubuntu

          Carlos Javier Bazan Huaman

          Carlos Javier Bazan Huaman

          student•
          hace 6 años

          Hola puedes modificar tu dockerfile asi: CMD["npx", "nodemon", "--legacy-watch", "index.js"] con este cambio levantas el container como indica el profesor y ya reconoce los cambios. Saludos.

        Felipe Jurado Murillo

        Felipe Jurado Murillo

        student•
        hace 6 años

        Cuando ejecutamos: docker build -t platziapp . Observamos que aparece “Using cache”, esto significa, cómo cada capa es inmutable, cómo docker sabe cual es el comando que genero cada capa. Pero en cada capa, usa lo que hizo las capas anteriores.

        Cambiamos el mensaje de salida de la aplicación en el archivo “index.js”, y sí volvemos a ejecutar el comando, vemos que debe hacer todo de nuevo, porque al más minimo cambio de los bits, las capas deben volver a hacerse.

        ¿Qué podemos hacer para que no nos demande tanto tiempo en cada build? En el dockerfile lo modificamos así:

        dockerfile.png

        En el primer COPY voy a colocar únicamente aquellas cosas que afecten al comando npm install, y en node son ; package.json, y package-lock.json.

        En el segundo copy sí tal cual como estaba, porque él reconoce que ya se copiaron unos archivos y copia el resto.

        Esto nos ayuda mucho cuando estamos desarrollando, para que las dependencias solo se descarguen en una ocasión, y no nos consuma tanto tiempo en los builds.

        Cómo actualizar el contenido de un contenedor sin tener que estar dándole build? En el dockerfile, en vez de utilizar en el CMD, node utilizaremos nodemon, lo cual sirve monitorear mis archivos de javascript de mi servidor de node, y cuando los detecta se actualizar.

        CMD ["npx", "nodemon", "index.js"]

        Le damos en build, y ahora cómo queremos que node se reinice cuando cambiamos algo en nuestro nodejs, entonces vamos a montar los archivos.

        docker run --rm -p 3000:3000 -v /home/felipe/Documentos/curso-docker/docker:/usr/src platziapp Abrimos el navegador : localhost:3000 y vemos que está correcto. PERO, ahora modificamos el archivo de index.js y GUARDAMOS, y observamos que en la consola automáticamente se actualizan y abrimos el navegador y está todo correcto.

        si alguien tiene un problema con este tipo error [nodemon] starting node index.js internal/modules/cjs/loader.js:638 throw err; ^ la solucion que realice fueron las siguientes instrucciones 1 - npm install 2 - npm audit fix

        Y vuelven a hacer docker build y el docker run. esta manera me funciono el servicio

        Rafael Martínez

        Rafael Martínez

        student•
        hace 6 años
        1. A mí me funcionó de esta manera. > Dockerfile
        FROM node:10 COPY [&quot;package.json&quot;, &quot;package-lock.json&quot;, &quot;/usr/src/&quot;] WORKDIR /usr/src COPY [&quot;.&quot;, &quot;/usr/src/&quot;] EXPOSE 3000 CMD [&quot;npx&quot;,&quot;nodemon&quot;, &quot;-L&quot;, &quot;app/index.js&quot;] RUN npm install -g -f RUN npm audit fix
        1. Hacer Build docker build -t platziapp .

        2. Hacer Run docker run --rm -p 3000:3000 -v pwd[tab] platziapp

        Ever Alfredo Sorto Ayala

        Ever Alfredo Sorto Ayala

        student•
        hace 5 años

        me explicarían que hace la lnea docker run --rm -p 3000:3000 -v /User/gvilarino/Dev/git/docker:/user/src platzi

          Fernando Hernandez

          Fernando Hernandez

          student•
          hace 5 años

          Hola @eversorto.

          Creo que el comando por el que preguntas es: (Sin --rm )

          docker run -p 3000:3000 -v /User/gvilarino/Dev/git/docker:/user/src platzi
          • docker run: Permite iniciar un contenedor.

          • -p: Bandera para exponer los puertos utilizados por un contenedor

          • 3000:3000: Este par mapea el puerto del contenedor al puerto de la maquina huésped:

          • -v : bandera para montar volúmenes

          • /User/gvilarino/Dev/git/docker:/user/src platzi : Directorio de tu contenedor mapeado a un directorio de tu maquina huésped.

            Espero te sea de utilidad:

          Referencias:

          • Docker Run
          • Docker rm
          Carmen Santiago

          Carmen Santiago

          student•
          hace 5 años

          Complementando la respuesta que ya existe a esta pregunta.

          El flag --rm le dice al contenedor que se destruya cuando el proceso principal pare. Lo que normalmente sucede es que sólo se duerme el contenedor, dejando de esta forma paso a volver a ejecutarlo. Pero en un entorno de pruebas, aprendizaje, etc. Esto sólo nos ocaciona que se llenen de contenedores parados, así que ese flag los elimina en lugar de dejarlos durmiendo.

          Puedes ver más de esta información en la documentación que ya pasó el amigo @fernandofh y con el comando man en la consola.

          man docker run --rm

          man stands for manual.

          Si gustas aprender más sobre man y estas utilidades de la consola. Puedes ver el curso de introducción a la terminal y linea de comandos.

        Ever Alfredo Sorto Ayala

        Ever Alfredo Sorto Ayala

        student•
        hace 5 años

        npx?

          Roger Carlos Ariel Alba

          Roger Carlos Ariel Alba

          student•
          hace 5 años

          Sí,

          Es una herramienta para ejecutar paquetes de NPM

          Puedes leer más aquí.

          Y puedes tomar la versión más reciente de ese curso aquí.

        Alejandro Valenzuela

        Alejandro Valenzuela

        student•
        hace 6 años

        Buenas comunidad, consulta quiero crear un contenedor, en este caso con Nodejs y Postgres, y dentro de este crear un proyecto de express por ejemplo. Y que se refleje en la carpeta alfitriona cuando creo un archivo o carpeta dentro del contenedor. Estoy tratando y no se refleja en mi carpeta dnd tengo Dockerfile y docker-compose.yml estos son mis archivos: Dockerfile:

        Snap 2020-06-04 at 23.42.37.png

        docker-compose.yml:

        Snap 2020-06-04 at 23.44.58.png

        Porque mi idea es tener un entorno de desarrollo donde simplemente corra el contenedor y dentro de este crear proyectos necesarios. Desde ya muchas gracias.! Alejandro

          Gonzalo Amador Hernández

          Gonzalo Amador Hernández

          student•
          hace 5 años

          yo te recomendaria trabajar con el feature de vscode llamado developing in containers https://code.visualstudio.com/docs/remote/containers

        Don riata Sabrozon

        Don riata Sabrozon

        student•
        hace 6 años

        ¿Cuándo y para que usaría el flag de --rm o -d?

          Juan Castro

          Juan Castro

          teacher•
          hace 6 años

          El flag -rm se utiliza para ReMover contenedores: https://linuxize.com/post/how-to-remove-docker-images-containers-volumes-and-networks/.

          El flag -d te lo explico aquí: https://platzi.com/comentario/824612/.