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 el examen del curso
    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 6 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 5 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 5 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/.

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