Implementación de una aplicación web de contenedor en Amazon Lightsail
GUÍA DE INTRODUCCIÓN
Módulo 1: preparar el contenedor
En este módulo, crearemos una aplicación web básica con contenedores.
Introducción
En este módulo, revisaremos la aplicación de muestra que se proporciona con esta guía. Trabajaremos en la creación de un contenedor para ejecutar a nivel local la aplicación web provista y probaremos la aplicación web en nuestra laptop local antes de implementarla en la nube.
Lo que aprenderá
- Crear un contenedor para una aplicación web existente
- Ejecutar un contenedor para probar una aplicación a nivel local
Requisitos previos
Antes de comenzar esta guía, necesitará lo siguiente:
- Docker Desktop instalado
- Conocimientos básicos de los comandos de Docker
Tiempo de realización
10 minutos
Requisitos previos del módulo
- Una cuenta de AWS con acceso de nivel de administrador**
- Navegador recomendado: la última versión de Chrome o Firefox
[**] Es posible que las cuentas creadas en las últimas 24 horas aún no tengan acceso a los servicios necesarios para este tutorial.
Implementación
Crear la aplicación cliente
La aplicación web proporcionada en la carpeta de código es una aplicación web desarrollada con el marco de aplicación Flask para Python.
En pocas palabras, el marco Flask incluye un miniservidor para recibir solicitudes HTTP, un mecanismo de enrutamiento para asociar solicitudes específicas (un verbo de HTTP y una ruta/) al código Python y un motor de plantillas para representar el HTML final.
Una práctica recomendada es tener un servidor web dedicado para la aplicación Flask. El servidor web está configurado para ofrecer contenido estático, como imágenes, hojas de estilo (CSS) y archivos JavaScript (JS). El servidor web reenvía todas las demás solicitudes a la aplicación Flask. Para esta guía, elegimos utilizar el servidor web Nginx.
La comunicación entre Nginx y la aplicación Flask se realiza con el protocolo uWSGI. El componente uWSGI lo proporciona Flask.
Esta imagen ilustra la configuración de la aplicación.

La aplicación consta de los siguientes archivos:
- application.py es el núcleo de la aplicación. Define la lógica, la comunicación con un backend, si lo hay, etc.
- Pipfile enumera las dependencias Python de la aplicación web.
- Dockerfile configura el contenedor. Comienza con un contenedor oficial de Nginx y agrega Python, Flask y sus dependencias. Luego, copia el archivo de configuración nginx y un script de inicio.
- nginx-app.conf es el archivo de configuración de Nginx. Se asegura de que Nginx proporcione contenido estático mientras que otras solicitudes se transmiten a uWSGI/Flask.
- start.sh inicia los daemons de Nginx y uWSGI.
La aplicación es una aplicación web simple cuyo propósito es anunciar el lanzamiento de un servicio o producto nuevo y tiene un formulario de preinscripción.
Descargar el proyecto
Para crear y probar el contenedor, descargue una copia local del proyecto.
Abra un terminal y escriba los siguientes comandos:
git clone https://github.com/aws-developer-center/dev-center-guides/
cd dev-center-guides/GS_003_web_app_lightsail/code
A partir de ahora, todos los comandos suponen que navegó a este directorio.
Crear el contenedor
Ahora que conoce los componentes principales de la aplicación y cómo funcionan juntos, vamos a crear un contenedor.
Para crear la aplicación dentro de un contenedor, use el terminal y escriba los siguientes comandos:
# Assuming you navigated to the application directory as instructed above
# Make sure to include the space and period after signup in the below command
docker build -t demo-flask-signup .
Después de unos minutos (en función de la banda ancha de Internet), se creará el contenedor.
Para enumerar todas las imágenes de contenedor en el sistema, utilice el siguiente comando:
docker images
# It should output something similar to
REPOSITORY TAG IMAGE ID CREATED SIZE
demo-flask-signup latest 26d7924c5980 28 minutes ago 640MB
(...)
Probar el contenedor
Para probar el contenedor en la máquina local, primero inícielo y luego apunte un navegador hacia él.
docker run -p 8080:80 \
--rm \
-v ~/.aws:/root/.aws \
demo-flask-signup:latest
Las opciones pasadas al comando docker run son:
- -p 8080:80 para conectar el puerto TCP 8080 de la máquina local al puerto 80 del contenedor (Nginx).
- --rm para indicarle a Docker que retire el contenedor cuando se detenga.
- -v ~/.aws:/root/.aws para asignar la configuración de AWS CLI de la máquina local en el directorio ~/.aws al directorio del contenedor /root/.aws.
- Finalmente, demo-flask-signup:latest es el nombre y la etiqueta del contenedor que acabamos de crear.
Ahora que el contenedor se está ejecutando, abra un navegador y apúntelo hacia http://localhost:8080. Debería ver la pantalla de inicio de la aplicación, como se muestra a continuación.

Felicitaciones, ahora tiene un contenedor listo para implementar en la nube.
Conclusión
En este primer módulo, creamos una aplicación de contenedor muy básica y la ejecutamos a nivel local para asegurarnos de que funciona. En el siguiente módulo, aprenderemos a crear un servicio de contenedor de Amazon Lightsail.
Siguiente: crear infraestructura