Saltar al contenido

¿Cómo puedo crear una imagen de Docker para ejecutar Python y R?

Al fin después de mucho luchar hemos encontrado el arreglo de este contratiempo que muchos de nuestros usuarios de nuestro sitio presentan. Si tienes algún detalle que aportar puedes aportar tu comentario.

Solución:

El Dockerfile que construí para que Python y R se ejecuten junto con sus dependencias de esta manera es:

FROM ubuntu:latest

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends build-essential r-base r-cran-randomforest python3.6 python3-pip python3-setuptools python3-dev

WORKDIR /app

COPY requirements.txt /app/requirements.txt

RUN pip3 install -r requirements.txt

RUN Rscript -e "install.packages('data.table')"

COPY . /app

Los comandos para construir la imagen, ejecutar el contenedor (llamándolo SnakeR aquí) y ejecutar el código son:

docker build -t my_image .
docker run -it --name SnakeR my_image
docker exec SnakeR /bin/sh -c "python3 test_call_r.py"

Lo traté como un sistema operativo Ubuntu y construí la imagen de la siguiente manera:

  • suprima las indicaciones para elegir su ubicación durante la instalación de R;
  • actualice el apt-get;
  • establecer criterios de instalación de:
    • y = sí a las indicaciones del usuario para continuar (por ejemplo, asignación de memoria);
    • instale solo las dependencias recomendadas, no sugeridas;
  • incluir algunos paquetes de instalación esenciales para Ubuntu;
  • r-base para el software R;
  • r-cran-randomforest para forzar que el paquete esté disponible (a diferencia de la instalación separada de data.table que no funcionó para randomForest por alguna razón);
  • python3.6 versión de python;
  • python3-pip para permitir que se use pip para instalar los requisitos;
  • python3-setuptools para ayudar de alguna manera a ejecutar las instalaciones de pip (?!);
  • python3-dev para ejecutar la instalación de JayDeBeApi como parte de los requisitos (que de lo contrario se confunde es para Python2, no para 3);
  • especifique el “directorio de trabajo” activo para que sea la ubicación de /app;
  • copie el archivo de requisitos que contiene las dependencias de python (construido a partir del entorno virtual del código base de Python, por ejemplo, con pip freeze);
  • instale los paquetes de Python desde el archivo de requisitos (pip3 para Python3);
  • instale los paquetes R (por ejemplo, solo data.table aquí);
  • copie el contenido del directorio en el directorio de trabajo especificado /app.

Esto se replica desde mi publicación de blog en https://datascienceunicorn.tumblr.com/post/182297983466/building-a-docker-to-run-python-r

Ser específico en las versiones de Python y R te ahorrará futuros dolores de cabeza. Este enfoque, por ejemplo, siempre instalará R v4.0 y Python v3.8

FROM r-base:4.0.3
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends build-essential libpq-dev python3.8 python3-pip python3-setuptools python3-dev
RUN pip3 install --upgrade pip

ENV PYTHONPATH "$PYTHONPATH:/app"
WORKDIR /app

ADD requirements.txt .
ADD requirements.r .

# installing python libraries
RUN pip3 install -r requirements.txt

# installing r libraries
RUN Rscript requirements.r

Y su archivo requirements.r debería verse así

install.packages('data.table')
install.packages('jsonlite')
...

Si haces scroll puedes encontrar los informes de otros sys admins, tú igualmente tienes la opción de dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *