11# Parte 3: contenerización de aplicaciones #
22
33# Mi primera applicación a contenerizar > Node.js
4+ # Para esta demo usaremos VS Code.
5+ https://code.visualstudio.com/docs/containers/overview
46cd 01-contenedores/contenedores-iii/hello-world
57
68# Ejecutar la app sin contenerizar
@@ -56,48 +58,24 @@ docker run -p 4000:3000 hello-world
5658# Si vuelves a generar tu imagen, después de que arregles los errores que reporta eslint, comprobarás que ha engordado
5759docker images
5860
59- # Añadir una nueva etiqueta a tu nueva imagen
60- docker image tag hello-world 0gis0/hello-world:latest
61- docker images # El image ID es el mismo para ambas etiquetas porque apuntan a la misma imagen
62-
63- # Publicar tu nueva imagen en Docker Hub
64- docker push 0gis0/hello-world:latest
65-
66- # Si accedes a tu cuenta en Docker Hub verás tu nueva imagen, la cual acaba de ser publicada
67- https://hub.docker.com/
68-
69- # Elimina la imagen de local
70- docker rm 5bfeba90ec4d --force
71- docker rmi -f hello-world 0gis0/hello-world
72-
73- # Ejecutar un nuevo contenedor usando mi nueva imagen en Docker Hub
74- docker run -p 4000:3000 0gis0/hello-world
75-
7661# ## Multi-stage Builds ###
77- # Ejemplo sin multi-stage
78- docker build hello-world -t no-multi-stage -f Dockerfile.no.multistages --no-cache
79- docker run -p 4000:3000 no-multi-stage
80-
8162# Con multi-stage lo que se hace es utilizar múltiples FROM dentro del mismo Dockerfile.
8263# Cada FROM utiliza una imagen base diferente y cada una inicia un nuevo stage.
8364# El último FROM produce la imagen final, el resto solo serán intermediarios.
8465# Puedes copiar archivos de un stage a otro, dejando atrás todo lo que no quieres para la imagen final.
8566# La idea es simple: crea imagenes adicionales con las herramientas que necesitas (compiladores, linters, herramientas de testing, etc.) pero que no son necesarias para producción
8667# El objetivo final es tener una imagen productiva lo más slim posible y segura.
8768# Mismo ejemplo con multi-stages
88- docker build hello-world -t multi-stage -f Dockerfile.multistages --no-cache
69+ docker build hello-world -t multi-stage -f Dockerfile.multistages
8970docker run -p 5000:3000 multi-stage
9071
9172docker images
9273
93- # ## Squash de una imagen ###
94- docker inspect no-multi-stage
95- docker build hello-world -t image-squashed -f Dockerfile.no.multistages --no-cache --squash
96- docker images
97- docker inspect image-squashed
74+ # Si comparas con la versión de la misma aplicación sin multi-stages, la diferencia es notable
75+ docker build hello-world -t no-multi-stage -f Dockerfile.no.multistages --no-cache
9876
9977
100- # ### Ejemplo de contenerización de una aplicación en .NET #####
78+ # ### Ejemplo de contenerización de una aplicación en un entorno .NET #####
10179# Visual Studio 2019
10280# 1. Creación de un nuevo proyecto del tipo ASP.NET Core Web Application
10381# 2. Dejar seleccionado el tipo MVC (Dejar el check de Enable Docker Support deshabilitado)
@@ -106,21 +84,13 @@ docker inspect image-squashed
10684# Generará un Dockerfile con Multi-stage
10785
10886
109-
110- # Visual Studio Code
111- https://code.visualstudio.com/docs/containers/overview
112-
113- # Demos con la extensión de Docker para Visual Studio Code
114- # Ejecutar un contenedor desde el explorador de imágenes
115- # Registros
116-
11787# ## Ejemplo de aplicación en Java - IntelliJ IDEA/Eclipse ####
11888https://www.jetbrains.com/help/idea/running-a-java-app-in-a-container.html
11989
120- # FROM openjdk:12.0.1
121- # COPY ./out/production/HelloWorld /tmp
90+ # FROM openjdk:14
91+ # COPY ./out/production/HelloDocker/ /tmp
12292# WORKDIR /tmp
123- # ENTRYPOINT ["java", "HelloWorld"]
93+ # ENTRYPOINT ["java","HelloWorld"]
12494
12595# Ejemplo de aplicación con un contenedor Windows
12696# Windows Base OS images: https://hub.docker.com/_/microsoft-windows-base-os-images
0 commit comments