| Author: Eduardo Enriquez

Dockerfile para python con alpine y multistage builds.

Un ejemplo de un Dockerfile para python 3 tomado de la documentaci贸n oficial de docker聽es este:

La imagen base es "python:3" que esta basada en debian y tiene la desventaja de ocupar bastante espacio y traer un monton de herramientas que son 煤tiles durante el desarrollo (como por ejemplo bash) y no tan 煤tiles para el ambiente productivo. Por esto ultimamente se usa m谩s y m谩s im谩genes basadas en Alpine. Una distribucion de linux (basada en busybox) que ocupa solo 5mb.

La gran diferencia va a consistir en tener que utilizar apk (y no apt-get) para instalar nuestras dependencias. El resto es igual que en cualquier dockerfile.

Otro ajuste que se puede realizar es usar una nueva feature de docker que se llama multistage builds.聽

Aqu铆 utilzamos dos FROM, uno para indicar la imagen base sobre la cual se van a compilar los paquetes. Para compilar algunas dependecias de python se necesitan de librerias de C y de algunos paquetes extras. El segundo FROM indica la imagen definitiva sobre la cual se va a trabajar y se indica que archivos binarios (o ya compilados) se necesitan. Y se indica la copia de dichos archivos de la imagen聽de la compilacion anterior (COPY --from)

Con esta imagen podemos usar un docker-compose.yml para no tener que memorizar todas las combinaciones de parametros de docker:

Este docker-compose.yml tambi茅n necesita de un archivo .env con todos los secretos.

Related Posts