CursosEmpresasBlogLiveConfPrecios

Usando docker para desarrollar aplicaciones

Clase 16 de 25 • Fundamentos de Docker 2018

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

    Viendo ahora
  • 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

    09:16 min
  • 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

      Comentarios

      ernesto

      ernesto

      student•
      hace 7 años
        Iván Toro

        Iván Toro

        student•
        hace 7 años
        FREDDY ANDRES LEMUS BARRERA

        FREDDY ANDRES LEMUS BARRERA

        student•
        hace 7 años
      Luis Francisco Quitian Cabra

      Luis Francisco Quitian Cabra

      student•
      hace 7 años
        David Armando Velazquez

        David Armando Velazquez

        student•
        hace 7 años
        Jehison Pérez

        Jehison Pérez

        student•
        hace 6 años
      Omar Juarez

      Omar Juarez

      student•
      hace 6 años
        Gonzalo Amador Hernández

        Gonzalo Amador Hernández

        student•
        hace 5 años
      Joel Alejandro Morales García

      Joel Alejandro Morales García

      student•
      hace 7 años
        Roberto Villarroel

        Roberto Villarroel

        student•
        hace 7 años
      David Gallego

      David Gallego

      student•
      hace 7 años
        William Meza

        William Meza

        student•
        hace 7 años
        Doapps Team

        Doapps Team

        student•
        hace 7 años
      Wilson Fernando Antury Torres

      Wilson Fernando Antury Torres

      student•
      hace 6 años
      Carlos Andrés Charris S

      Carlos Andrés Charris S

      student•
      hace 7 años
        John Andrey Serrano

        John Andrey Serrano

        student•
        hace 7 años
      Emma Juliana Gachancipa Castelblanco

      Emma Juliana Gachancipa Castelblanco

      student•
      hace 6 años
      José Colmenares

      José Colmenares

      student•
      hace 6 años
      Gilberto Pérez

      Gilberto Pérez

      student•
      hace 7 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 7 años
        Pablo Aquino

        Pablo Aquino

        student•
        hace 6 años
      Wladimir Chópite

      Wladimir Chópite

      student•
      hace 6 años
      redbeestudios studios

      redbeestudios studios

      student•
      hace 7 años
      Luis Ernesto Román Chitala

      Luis Ernesto Román Chitala

      student•
      hace 6 años
      Leniel Luzardo

      Leniel Luzardo

      student•
      hace 6 años
      Freddy Taborda

      Freddy Taborda

      student•
      hace 7 años
        Guido Vilariño

        Guido Vilariño

        teacher•
        hace 7 años
      Edgar de Jesus Mendoza Ortegon

      Edgar de Jesus Mendoza Ortegon

      student•
      hace 7 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 7 años
        Edgar de Jesus Mendoza Ortegon

        Edgar de Jesus Mendoza Ortegon

        student•
        hace 7 años
      Wilmer David Cedeño Mendoza

      Wilmer David Cedeño Mendoza

      student•
      hace 7 años
        Andrus Diaz

        Andrus Diaz

        student•
        hace 7 años
      Wilson Fernando Antury Torres

      Wilson Fernando Antury Torres

      student•
      hace 6 años
      Jesus Ruben Castillo Valenzuela

      Jesus Ruben Castillo Valenzuela

      student•
      hace 7 años
        Jose Miguel Diaz

        Jose Miguel Diaz

        student•
        hace 7 años
        Hinder Adrian Alvarez Perlaza

        Hinder Adrian Alvarez Perlaza

        student•
        hace 6 años
      Cristian Camilo Perez Cardona

      Cristian Camilo Perez Cardona

      student•
      hace 6 años
        Julian Andres Cañaveral Valencia

        Julian Andres Cañaveral Valencia

        student•
        hace 6 años

      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.

      • COPY [".", "/usr/src/"] : partiendo del contexto de build, copia lo que yo le pida del contexto a la ruta de mi imagen nueva.
      • docker build -t anturyapp . : crea la imagen con el contexto - . - y se llamará anturyapp.
      • docker run --rm -p 3000:3000 anturyapp : corre el contenedor con nuestra imagen y conectamos nuestro host con el contenedor por el puerto 3000.
      • --rm : esta bandera indica que después de correr el contenedor se borre éste contenedor.

      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