Si es nuevo en Docker y los contenedores, aprender a implementar una aplicación API de Python Flask en Docker es una excelente manera de comenzar. Docker le permite almacenar aplicaciones en contenedores con tecnología ligera y seguridad para una rápida implementación de aplicaciones.
En este tutorial, aprenderá a convertirse en su propio maestro en la configuración e implementación de aplicaciones API de Python Flask en contenedores Docker.
¡Prepárese y comience a implementar!
Requisitos previos
Si desea seguir paso a paso, necesitará lo siguiente instalado:
- Máquina Ubuntu con Docker instalado. Este tutorial usa Ubuntu 18.04.5 LTS con Docker v19.03.8.
- Python v3.9 o posterior instalado en una máquina con Ubuntu. Este tutorial usará Python v3.9.2 en una máquina con Ubuntu.
- Paquete Elinks instalado en la máquina Ubuntu utilizada para probar la API en este tutorial.
Creación de una aplicación API de Python Flask (API GET y POST)
Inicie este tutorial creando una aplicación Python Flask. Flask es un marco ligero de microaplicaciones web WSGI escrito en Python. Flask proporciona herramientas y funciones útiles para crear aplicaciones web en Python.
Antes de crear una aplicación de Python Flask, instalará un entorno virtual de Python Flask y Python donde Flask ejecutará una aplicación.
1. Inicie sesión en su máquina Ubuntu usando su cliente SSH favorito.
2. Luego, ejecute los siguientes comandos para crear un directorio llamado ~/docker_python_flask_demo y cambiar a eso. Este directorio contendrá todos los archivos requeridos por Python y Docker para ejecutar una aplicación.
mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo
3. Ejecute el pip
comando a continuación para install
un entorno virtual de Python (virtualenv
) que necesita Flask para ejecutar las aplicaciones. Un entorno virtual de Python ofrece su propio binario de Python y paquetes instalados por aplicación para evitar conflictos con otras aplicaciones.
pip install virtualenv
4. Ejecute virtualenv
comando a continuación para crear y activar un entorno virtual usando el venv
módulo.
virtualenv venv
5. Ahora, ejecute el siguiente comando para instalar Python flask
paquete con el pip
gerente de empaquetación.
pip install flask
6. Ejecute el siguiente comando para activar paquetes en su entorno virtual antes de que pueda comenzar a instalarlos o usarlos. Esto modifica el VIRTUAL_ENV
variable de entorno para apuntar a su entorno virtual y antepone el binario de Python del entorno virtual a la ruta para que ejecute el binario correcto.
source venv/bin/activate
7. Cree un archivo más, llamado requirements.txt y defina la dependencia de la aplicación Flask, como se muestra a continuación.
Flask==2.0.2
8. Cree un archivo de texto ~/docker_python_flask_demo/app.py y complete el archivo con el siguiente código de Python.
El siguiente código de Python importa el flask
de Python class y crea una instancia de clase llamada app
. La app
instancia de clase contiene dos login()
funciones ejecutadas cuando los usuarios envían solicitudes en /login
página.
El success()
La función luego se ejecuta, mostrando el mensaje de bienvenida "nombre del usuario" en el navegador.
from flask import Flask , redirect , url_for , request # Importing the class flask
# app is the object or instance of Flask
app = Flask(__name__)
# app.route informs Flask about the URL to be used by function
@app.route('/success/<name>')
# Creating a function named success
def success(name):
return 'welcome %s' % name
@app.route('/login', methods = ['GET','POST'])
# Creating a function named login
def login():
if request.method == 'POST':
user = request.form['adamlistek']
return redirect(url_for('success', name = user))
else:
return "INVALID"
# Programs executes from here in a development server (locally on your system)
# with debugging enabled.
if __name__ == '__main__':
app.run(debug = True)
9. Cree un archivo más llamado ~/docker_python_flask_demo/form.html y copia/pega el siguiente código.
Ejecutar el código HTML a continuación crea un formulario con dos entradas; uno es texto para proporcionar su nombre y el otro es un botón de envío.
Tan pronto como proporcione un nombre de usuario y presione el botón Enviar, se envía una solicitud de publicación y Flask ejecuta otra función y abre una nueva página web en http://localhost:5000/success/
<html>
<body>
<form action="http://localhost:5000/login" method="post">
<p>Please Enter your name</p>
<p><input type="text" name="adamlistek" /></p>
<p><input type="submit" value="Submit" /></p>
</form>
</body>
</html>
10. Finalmente, ejecute Python
comando a continuación para verificar la aplicación (app.py
) funciona localmente en su sistema.
Python app.py
Como puede ver a continuación, la aplicación se ejecuta correctamente en la máquina Ubuntu pero no en Docker. Lanzará la misma aplicación en Docker en las siguientes secciones.
Creación de un Dockerfile para implementar la aplicación API de Python Flask
Acaba de crear y verificar que la aplicación Python Flask funciona localmente en su máquina. Pero antes de implementar la aplicación en Docker, primero creará un Dockerfile para definir todos los conjuntos de instrucciones para construir la imagen de Docker.
Cree un archivo llamado Dockerfile en ~/docker_python_flask_demo directorio y copie/pegue el contenido a continuación en el Dockerfile.
Docker usará este Dockerfile para ejecutar todas las instrucciones o comandos necesarios para crear una nueva imagen de Docker encima de la imagen base (ubuntu:18.04
).
# Sets the base image for subsequent instructions
FROM ubuntu:18.04
# Sets the working directory in the container
WORKDIR /app
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev
# Copies the files to the working directory
COPY form.html /app/form.html
# Copies the dependency files to the working directory
COPY requirements.txt /app/requirements.txt
# Install dependencies
RUN pip install -r requirements.txt
# Copies everything to the working directory
COPY . /app
# Command to run on container start
CMD [ "python" , "./app.py" ]
Ahora, ejecuta el tree
Comando a continuación para verificar que todos los archivos necesarios para ejecutar la aplicación Python Flask se encuentran en el directorio de trabajo (~/docker_python_flask_demo ).
tree
Creación de una imagen de Docker para la aplicación API de Python Flask
Ahora tiene los archivos necesarios para implementar una aplicación Python Flask, pero esos archivos no harán nada a menos que cree una imagen. Ejecutará la compilación docker build
comando para crear una imagen de Docker según las instrucciones que configuró en el Dockerfile.
Ejecute la compilación docker build
Comando a continuación para construir una imagen de Docker en el directorio de trabajo (.
). Este comando etiqueta (-t
) la imagen como flask-image
versión 1 (:v1
).
sudo docker build -t flask-image:v1 .
Ahora, ejecuta el docker build
Comando a continuación para enumerar todas las imágenes disponibles.
sudo docker images
A continuación, puede ver varios atributos devueltos, como REPOSITORIO . Observe el REPOSITORIO el nombre es frasco-imagen y está etiquetado con una versión (v1 ), como se muestra a continuación.
Ejecución de la aplicación Python Flask en Docker Container
Después de crear una imagen de Docker, ahora puede ejecutar la aplicación flash de Python en un contenedor de Docker. Un contenedor Docker empaqueta el código y sus dependencias para ejecutar aplicaciones rápidamente.
1. Ejecute docker run
Comando a continuación para realizar lo siguiente:
- Inicie el contenedor en modo separado (
-d
), por lo que se ejecuta como un proceso en segundo plano y devuelve la salida de la consola al momento de la creación. - Asigna el puerto host de Docker (
-p 5000:5000
) con el puerto del contenedor. - Lanza el contenedor Docker (
flask-image:v1
)
sudo docker run -d -p 5000:5000 flask-image:v1
2. A continuación, ejecute docker build
Comando a continuación para enumerar todos los contenedores en el motor de Docker. Verifique si Docker creó correctamente el contenedor.
sudo docker ps -a
3. Finalmente, ejecute el siguiente comando para abrir su navegador web en la máquina Ubuntu usando elinks.
elinks form.html
El comando abre el navegador web en el terminal y solicita un nombre, como se muestra a continuación.
Ingrese su nombre y presione el botón Enviar.
4. Como puede ver a continuación, después de presionar Enviar botón, la función de inicio de sesión redirige a la función de éxito en la aplicación Flask.
Conclusión
Este tutorial tuvo como objetivo ayudarlo a través del proceso de configuración de un contenedor Docker API de Python Flask usando imágenes Docker. También se refirió a cómo lanzar contenedores de Python Flask mediante Dockerfiles, lo que le permite editar y crear contenedores personalizados de su elección.
Entonces, ¿qué otras aplicaciones tiene en mente para implementar en el contenedor Docker? ¿Quizás un contenedor Docker MongoDB?