Utilizzo di variables ENV in Docker democratizzato che esegue RStudio

Posso impostare un Dockerfile con le variables ENV predefinite che posso configurare quando esegue il mio contenitore docker, ad esempio in un Dockerfile che ho le righe:

ENV USERNAME ropensci ENV EMAIL [email protected]github.com RUN git config --global user.name $USERNAME RUN git config --global user.email $EMAIL 

Grande. Quando lancio una session intertriggers:

 docker run -it --env USERNAME="Carl" --env [email protected] myimage /bin/bash 

Posso quindi rilasciare il command git config --list e vedere che git è configurato per utilizzare i valori che ho fornito nella row di command invece dei valori predefiniti.

Tuttavia, il mio Dockerfile è anche configurato per eseguire un server RStudio che posso quindi accedere al browser quando esegue l'image in modalità Daemon:

 docker run -d -p 8787:8787 --env USERNAME="Carl" --env [email protected] cboettig/ropensci-docker 

Vado a localhost: 8787 e accedi a RStudio che funziona come previsto, avviare un nuovo "progetto" con git abilitato, ma poi RStudio non riesce a trovare il mio nome di git e email. Posso aprire la shell dal menu RStudio e eseguire git config --list o echo $USERNAME e ho solo un valore vuoto. Perché questo funziona per / bin / bash ma non da RStudio e come faccio a risolvere il problema?

Il tuo config git è impostato su /.gitconfig. Questo file di configuration è per l'utente root. È necessario impostare la configuration di git per l'utente rstudio perché rstudio viene eseguito su utente rstudio. Il command sotto è una soluzione temporanea.

 docker run -it -p 8787:8787 --env USERNAME="Carl" --env [email protected] cboettig/ropensci-docker bash -c "cp /.gitconfig /home/rstudio; /usr/bin/supervisord" 

Funziona!

rstudio

Un'altra soluzione è scrivere Dockerfile è basato su cboettig / ropensci-docker. Di seguito è Dockerfile di esempio.

 FROM cboettig/ropensci-docker RUN cp /.gitconfig /home/rstudio CMD ["/usr/bin/supervisord"]