Post Image

Creare un Ambiente Docker per Eseguire Script R

25 giu 2024

Negli ultimi anni, Docker si è affermato come uno strumento indispensabile per la gestione degli ambienti di sviluppo e produzione. Se sei un data scientist, un analista o semplicemente qualcuno che lavora con script R, Docker può semplificare significativamente la gestione delle dipendenze e l'esecuzione dei tuoi progetti.

In questo articolo, esploreremo passo dopo passo come creare un ambiente Docker ottimizzato per l'esecuzione di script R. Imparerai come configurare un Dockerfile, gestire le dipendenze, eseguire gli script e integrare Docker Compose per una gestione più efficace dei tuoi container.

Prerequisiti

Prima di iniziare, assicurati di avere Docker installato sul tuo sistema. Puoi scaricarlo gratuitamente dal sito ufficiale di docker.com.

Passo 1: Crea la struttura del progetto

Installato Docker, crea una nuova cartella all'interno del tuo filesystem, che conterrà tutti gli script R e i file Docker necessari per la creazione dell'ambiente di lavoro. In questo articolo chiameremo la cartella di lavoro docker_r. Se lavori su Windows puoi creare la cartella e creare al suo interno i file Dockerfile, docker-compose.yml, first_script.R.

Su Linux e Mac, puoi eseguire da terminale:

mkdir docker_r
cd docker_r
touch Dockerfile docker-compose.yml first_script.R

La fase 1 termina quindi con la creazione della cartella di progetto contenente i file che dovremo implementare.

Passo 2: Creazione del Dockerfile

Il Dockerfile è il file di configurazione principale per definire l'ambiente del container Docker. Questo file definisce da dove derivare l'immagine base, come copiare i file necessari nel container e quali comandi eseguire al momento della creazione del container.

# Dockerfile

# Usa l'immagine di base ufficiale di R
FROM r-base

# Imposta la directory di lavoro nel container
WORKDIR /usr/src/my_r_scripts

# Copia gli script R nella directory di lavoro del container
COPY . /usr/src/my_r_scripts

# Comando di default per eseguire gli script R
CMD ["Rscript", "first_script.R"]

Passo 3: Implementazione script R

Prima di passare all'esecuzione dello script R, dobbiamo implementare le funzionalità al suo interno. Nel nostro caso, lo script implementa una stampa a video di una stringa.

# first_script.R

print("Hello World!")

Passo 4: Esecuzione dello script R

Una volta definito il Dockerfile, puoi costruire ed avviare il container Docker utilizzando il seguente comando:

docker build -t my_r_image .
docker run --rm my_r_image

Eseguendo i comandi indicati, vedrai a video la stampa di Hello World.

Passo 5: Utilizzo di Docker Compose

Al fine di semplificare la gestione del tuo ambiente Docker, puoi utilizzare Docker Compose. Docker Compose consente di gestire e definire più container Docker come un'applicazione.

Crea il seguente docker-compose.yml per il nostro progetto:

services:
  rscript:
    build: .
    volumes:
      - .:/usr/src/my_r_scripts
    working_dir: /usr/src/my_r_scripts
    command: Rscript first_script.R

Il file creerà un container, denominato rscript, che, lavorando con il Dockerfile, eseguirà lo script first_script.R.

Per avviare il container utilizzando Docker Compose esegui il seguente comando nella cartella del progetto.

docker-compose up --build -d

Il comando indicato crea il container e lo avvia. Adesso puoi richiamare il container ed eseguire lo script first_script.R, con il comando:

docker-compose run rscript

Il comando mostra a video l'output generato dallo script first_script.R.

Passo 6: esecuzione di uno script diverso

L'esecuzione del comando docker-compose run rscript esegue sempre lo script first_script.R poiché questo è ciò che abbiamo indicato nel docker-compose.yml.

Tuttavia è possibile creare nuovi script R, all'interno della cartella di progetto, ed eseguirli utilizzando il docker-compose run. Vediamo come fare.

Per prima cosa crea lo script second_script.R all'interno della cartella di progetto. Su linux e mac esegui il comando:

touch second_script.R

Nel file inseriamo la stampa, differenziandola dalla stampa dello script first_script.R, come segue:

# second_script.R

print("Hello World from second script!!!")

Per eseguire questo nuovo file, esegui il comando:

docker-compose run --rm rscript Rscript second_script.R

il comando stampa a video la nuova stringa.

Conclusioni

In questo articolo hai visto come avviare ambienti Docker per eseguire script R. Gli ambienti Docker possono essere creati sia con il comando docker sia con il comando docker-compose.

A questo punto puoi concentrarti sull'implementazione dei tuoi script, poiché attraverso le implementazioni proposte dall'articolo, non avrai più problemi sulla configurazione dell'ambiente di lavoro R.