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.