Ciclo de vida de nuestras aplicaciones con docker¶
El ciclo de vida de una aplicación docker lo podría resumir en:
- Paso 1: Desarrollo de nuestra aplicación
- Paso 2: Creación de la imagen Docker
- Paso 3: Probamos nuestra aplicación en el entorno de desarrollo o prueba
- Paso 4: Distribuimos nuestra imagen
- Paso 5: Implantación de la aplicación en el entorno de producción
- Paso 6: Modificación de la aplicación, volviendo al paso 2.
Ejercicio: Despliegue de páginas estáticas con docker¶
Paso 1:Desarrollo de nuestra aplicación¶
En este ejemplo vamos a desarrollar una página web que va a ser servida por un servidor web que se ejecutará en un contenedor Docker.
Por lo tanto lo primero que debemos hacer es crear nuestra página web:
Paso 2: Creación de la imagen Docker¶
Utilizando un fichero Dockerfile definimos como vamos a crear nuestra imagen:
- Qué imagen base vamos a utilizar.
- Qué paquetes vamos a instalar
- Donde copiamos nuestro código fuente (página web)
- Indicamos el servicio que va a ejecutar el contenedor (servidor apache)
El fichero Dockerfile:
# syntax=docker/dockerfile:1
FROM debian:stable-slim
RUN apt-get update -y && apt-get install -y \
apache2 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
COPY ./public_html /var/www/html/
CMD apache2ctl -D FOREGROUND
Podríamos usar una imagen base con apache2 ya instalado:
Creamos nuestra imagen, desde el directorio donde tenemos elDockerfile, ejecutamos:
Podemos comprobar que en nuestro entorno local tenemos la imagen que acabamos de crear:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
josedom24/aplicacionweb v1 b2e0df215145 7 seconds ago 204MB
debian latest be2868bebaba
Paso 3: Probamos nuestra aplicación en el entorno de desarrollo¶
Creamos un contenedor en nuestro entorno de desarrollo:
$ docker run --name aplweb -d -p 80:80 josedom24/aplicacionweb:v1
fbdd73529e2bb2d9ee9c6415031513741688e6d38509572251f5b624ed7dc23f
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbdd73529e2b josedom24/aplicacionweb:v1 "/usr/sbin/apache2ct…" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp aplweb

Paso 4: Distribuimos nuestra imagen¶
Vamos a subir nuestra imagen al registro Docker Hub:
$ docker login
...
$ docker push josedom24/aplicacionweb:v1
The push refers to repository [docker.io/josedom24/aplicacionweb]
ac126159496f: Pushed
cc15ec5f0c43: Pushed
...
Comprobamos que está subida al repositorio:
Paso 5: Implantación de la aplicación¶
En el el entorno de producción, bajamos la imagen de Docker Hub y creamos el contenedor:
$ docker pull josedom24/aplicacionweb:v1
v1: Pulling from josedom24/aplicacionweb
9a029d5ca5bb: Pull complete
...
$ docker run --name aplweb_prod -d -p 80:80 josedom24/aplicacionweb:v1
Paso 6: Modificación de la aplicación¶
Al modificar el código de la aplicación tenemos que generar una nueva imagen.
$ cd public_html
echo "<h1>Prueba 2</h1>" > index.html
$ docker build -t josedom24/aplicacionweb:v2 .
Y probamos la aplicación:

Subimos la nueva versión de la aplicación. En el entorno de producción: bajamos la nueva versión, eliminamos el contenedor de la versión antigua y creamos un nuevo contenedor con la nueva imagen:
En producción: