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!
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"]