Pruebas con Docker
Mientras se realiza el desarrollo o las pruebas de calidad, sería útil poder comprobar nuestro código en diferentes entornos. Por ejemplo, es posible que necesitemos comprobar nuestro código Python entre diferentes versiones de Python, o en diferentes distribuciones de Linux como Fedora, Ubuntu, CentOS, etc. Para esta receta, utilizaremos Flask, que es un microframework para Python (https://www.palletsprojects.com/p/flask/). Utilizaremos el código de ejemplo del repositorio de GitHub de Flask. Elegí esto para mantener las cosas simples, y es más fácil de usar para otras recetas también.
Para esta receta, crearemos imágenes con un contenedor que tenga Python 2.7 y otro con Python 3.7. Luego, utilizaremos código de prueba de Python de ejemplo para ejecutarlo en cada contenedor.
Preparación
Realice las siguientes preparaciones:
- Como vamos a utilizar el código de ejemplo del repositorio de GitHub de Flask, clonémoslo:
$ cd /tmp
$ git clone https://github.com/pallets/flask
- Cree un archivo
Dockerfile_2.7con el siguiente contenido y luego construya una imagen a partir de él:
$ cat /tmp/Dockerfile_2.7
FROM python:2.7
RUN pip install flask pytest
ADD flask/ /flask
WORKDIR /flask/examples/tutorial
RUN pip install -e .
CMD ["/usr/local/bin/pytest"]
- Para construir la imagen
python2.7test, ejecute el siguiente comando:
$ docker image build -t python2.7test -f /tmp/Dockerfile_2.7 .
- De manera similar, cree un Dockerfile con
python:3.7como imagen base y construya la imagenpython3.7test:
$ cat /tmp/Dockerfile_3.7
FROM python:3.7
RUN pip install flask pytest
ADD flask/ /flask
WORKDIR /flask/examples/tutorial
RUN pip install -e .
CMD ["/usr/local/bin/pytest"]
- Para construir la imagen
python3.7test, ejecute el siguiente comando:
$ docker image build -t python3.7test -f /tmp/Dockerfile_3.7 .
- Asegúrese de que ambas imágenes estén creadas:
$ docker image ls

Cómo hacerlo…
Ahora, utilizando las dos imágenes que creamos, ejecutémoslas para ver los resultados.
Para probar con Python 2.7, ejecute el siguiente comando:
$ docker container run python2.7test

De manera similar, para probar con Python 3.7, ejecute el siguiente comando:
$ docker container run python3.7test

Cómo funciona…
Como puede ver en los dos Dockerfiles, antes de ejecutar el comando CMD, que ejecuta el binario pytest, agregamos el código fuente de Flask a la imagen, cambiamos nuestro directorio de trabajo al directorio de ejemplo de la tutoría, /flask/examples/tutorial, e instalamos la aplicación. Así que, tan pronto como el contenedor se inicie, ejecutará el binario pytest en nuestras pruebas.
Hay más…
-
En esta receta, hemos visto cómo probar nuestro código con diferentes versiones de Python. De manera similar, puede elegir diferentes imágenes base de Fedora, CentOS y Ubuntu, y probarlas en diferentes distribuciones de Linux.
-
Si utiliza Jenkins en su entorno, entonces puede utilizar su plugin de Docker para provisionar dinámicamente un esclavo, ejecutar una compilación y desmantelarlo en el host de Docker.
NOTA
Puede encontrar más detalles sobre esto en https://plugins.jenkins.io/docker-plugin.