Usando docker para desarrollar aplicaciones
Clase 16 de 25 • Fundamentos de Docker 2018
Contenido del curso
Clase 16 de 25 • Fundamentos de Docker 2018
Contenido del curso
ernesto
Iván Toro
FREDDY ANDRES LEMUS BARRERA
Luis Francisco Quitian Cabra
David Armando Velazquez
Jehison Pérez
Omar Juarez
Gonzalo Amador Hernández
Joel Alejandro Morales García
Roberto Villarroel
David Gallego
William Meza
Doapps Team
Wilson Fernando Antury Torres
Carlos Andrés Charris S
John Andrey Serrano
Emma Juliana Gachancipa Castelblanco
José Colmenares
Gilberto Pérez
Diego Forero
Pablo Aquino
Wladimir Chópite
redbeestudios studios
Luis Ernesto Román Chitala
Leniel Luzardo
Freddy Taborda
Guido Vilariño
Edgar de Jesus Mendoza Ortegon
Diego Forero
Edgar de Jesus Mendoza Ortegon
Wilmer David Cedeño Mendoza
Andrus Diaz
Wilson Fernando Antury Torres
Jesus Ruben Castillo Valenzuela
Jose Miguel Diaz
Hinder Adrian Alvarez Perlaza
Cristian Camilo Perez Cardona
Julian Andres Cañaveral Valencia
Hola! les comento como fixear el error que les puede llegar a ocurrir a la hora de hacer un build del repo del curso
npm ERR! 404 Not Found: flatmap-stream@0.1.1
Este error aparece por un problema de seguridad en la libreria event-stream
Para poder solucionar este problema y que el docker build funcione , tuve que eliminar de las dev-dependencias del package.json del proyecto la libreria nodemon
"devDependencies": { "mocha": "5.2.0", "nodemon": "1.18.6" // eliminar esta linea }
Saludos!
¡Gracias! 😄
Otra opción es subir la version a 1.18.7
el link del repositorio es https://github.com/platzi/docker
gracias!
Mil gracias!!!
El WORKDIR no es un simple cd en el que nos vamos a parar en ese directorio, sí hace eso pero va más allá; con el WORKDIR se establece el directorio de trabajo en el cual será el directorio base de la aplicación y en dónde se van a ejecutar los comando que se especifiquen durante el Dockerfile.
un WORKDIR es solo un comando abreviado mkdir dir && cd $_, y las siguientes directivas RUN, CMD, ENTRYPOINT, COPY y ADD se ejecutan en ese directorio pero es porque se hizo un cd.
si despues de un WORKDIR, decides hacer un cd a otro directorio, las directivas antes mencionadas ya no correran en el WORKDIR, porque te cambiaste de directorio
Este es el link al repositorio del proyecto:
Gracias 😃
Segun esta respuesta, solo hay que borrar el archivo package-lock.json y luego ejecutar el comando npm install: yo solo le agregue este comando al Dockerfile:
FROM node:8 COPY [".", "/usr/src/"] WORKDIR /usr/src RUN rm package-lock.json // Yo agregué este RUN npm install EXPOSE 3000 CMD ["node", "index.js"]
esto era lo que buscaba
Esto funcionó
aquí está el repositorio: https://github.com/platzi/docker
el build mi me funciono solo con eliminar de las devDependencies del package.json el package mocha
“devDependencies”: {
“nodemon”: “^1.18.7”
}
Crear una imagen y correr un proyecto
FROM node:8 COPY [“.", "/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 ["node", "index.js"] # ejecuta el comando node index.js el cual levanta el servidor de express
**Construimos la imagen
**docker build -t ubuntu:platzi .
Creo que una mejor opción seria usar
RUN npm install --production
En el Dockerfile
Entra aqui al repo.
Docker es simplemente sorprendente. Guido un increible profesor ! De los mejores de platzi me atrevo a decir
cual es la diferencia entre: docker build -t platziapp . docker build -t ubutun:platzi .
Simplemente el nombre con el que se crea la imagen, el primero crea una imagen llamada platziapp, el segundo crea una imagen llamada ubutun con un tag platzi
Son imágenes distintas, que se crean a partir de diferentes dockerfile. Una con una base de node:8 y otro con una base de ubuntu.
Una buena práctica para archivos Dockerfile es en el FROM siempre indicar un tag especifico. Porque sino, utiliza latest y eso puede llegar a ser incompatible con el código de la app. Seteando un tag especifico, aseguramos que siempre se va a ejecutar con la version base correcta
Buenas, estoy en windows y no se realiza el bind mount, he leido varios post y me dicen que es complicado, he realizados varias soluciones pero nada sigue sin actualizarse el contenedor cada vez que cambio algo en el el archivo index.js. Corre bien , solo que no se actualiza el contenedor cuando hago algo en el index.js, incluso hasta me sale los logs del nodemon la primera vez nada mas como si estuviera escuhcando. si me pueden ayudar aca les dejo el 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"]```
Poco a poco voy ampliando mi percepción respecto a los alcances de Docker :)
Docker es piola😂
Buenos dias.
Requiero su valiosa ayuda con este error: $ docker build -t platziapp . Sending build context to Docker daemon 116.7kB Step 1/6 : FROM node:8 ---> 6a23819b932c Step 2/6 : COPY [".", "/usr/src/"] ---> Using cache ---> 4d7e52cb3b0e Step 3/6 : WORKDIR /usr/src ---> Using cache ---> 9aed85b8d61a Step 4/6 : RUN npm install ---> Running in 44a7afd62795 npm WARN tar ENOENT: no such file or directory, open '/usr/src/node_modules/.staging/has-values-81f387ec/package.json' npm WARN tar ENOENT: no such file or directory, open '/usr/src/node_modules/.staging/has-values-81f387ec/README.md' npm WARN tar ENOENT: no such file or directory, open '/usr/src/node_modules/.staging/has-values-81f387ec/LICENSE' npm WARN tar ENOENT: no such file or directory, open '/usr/src/node_modules/.staging/has-values-81f387ec/index.js' npm ERR! code E404 npm ERR! 404 Not Found: event-stream@3.3.6
npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-03-22T13_17_42_166Z-debug.log The command '/bin/sh -c npm install' returned a non-zero code: 1
Gracias por sus comentarios
Freddy Taborda
Es un problema con npm y no docker. Evidentemente hay un issue con el contenido de package.json o la versión de node siendo utilizada. Prueba actualizar estos valores.
¿una pregunta rapida la -t y el punto al final que significa ? docker build -t platziapp .
El flag -t indica el nombre que va a tener la imagen, también puede incluir el tag (versión) por ejemplo php:latest, en cuanto al . indica que el Dockerfile esta en el directorio donde estas corriendo el comando.
Gracias @GOLLUM23
Blog donde indica las diferencias entre RUN y CMD RUN vs CMD
RUN: Comando que se ejecuta dentro de la imagen en su creación. CMD: Comando que se ejecuta dentro del contenedor al ejecutarlo.
Para clonar el proyecto del curso:
Git init
y luego:
Git clone https://github.com/platzi/docker.git
Yo solo hice git clone y ya me funciono.
Gracias, lo necesitaba. La comunidad Platzi la mejor.
# Empesamos desde una imagen de node. FROM node:8 # Copia del contexto de build COPY [".", "/usr/src/"] # Es como un cd WORKDIR /usr/src # Instalar dependencias node RUN npm install # Espone el puerto 3000 EXPOSE 3000 # Comando de arranque de la imagen CMD ["node", "index.js"]
:) gracias por el aporte