I use RStudio in Docker container in Windows 10 Pro.
I use RStudio rocker/rstudio
image pulled from https://hub.docker.com/u/rocker/.
To start container I executed command:
docker run -d -p 8787:8787 -v //c/Users/<My name>/Documents/R/Rprojects:/home/rstudio/ rocker/rstudio
And then I can access the server from my browser by following link: http://localhost:8787/. Everything works fine.
What I want to do is some customization of the RStudio environment. In particular, I changed Tools/Global options/Editor theme to 'Pastel on Dark'. I applied this option but it persists only when the container alive. When I restart the container custom options are all gone.
My projects are saved in the folder that I indicated when running container, but global options are not.
So, how can I save also global options on my hard drive. Maybe I need to expose another folder on my drive which will connect to container folder where RStudio saves global options?
Is it possible to predefine global options in dockerfile
as a new layer in docker image?
Use the -e , --env , and --env-file flags to set simple (non-array) environment variables in the container you're running, or overwrite variables that are defined in the Dockerfile of the image you're running.
Use -e or --env value to set environment variables (default []). If you want to use multiple environments from the command line then before every environment variable use the -e flag. Note: Make sure put the container name after the environment variable, not before that.
Docker is designed to enclose environments inside an image / a container. What this allows, for example, is to have a Linux machine on a Macbook, or a machine with R 3.3 when your main computer has R 3.5.
If, like me, you use an ephemeral container (using the --rm
flag), then the container gets deleted when stopped. This is a good thing as it ensures a 100% clean environment every time but it means settings are not preserved from session to session.
Unlike many popular IDE, rstudio settings are not stored in a user-accessible transparent json, although they are working on it.
A workaround is copying over the settings to the right location:
/home/rstudio/.R/rstudio/keybindings/rstudio_bindings.json
/home/rstudio/.rstudio/monitored/user-settings
To set it up:
I have created a quick launch shortcut pointing to the following script which is easily adapted. It starts a container named rstudio and copies over the settings I have backed up (in my case from /home/asac/projects/rstudio-config
)
#!/bin/bash
echo Running rstudio on localhost:8787
docker run -d --rm -p 8787:8787 -e PASSWORD=<pwd> \
-v /home/asac/projects:/home/rstudio/projects \
-v /home/asac/data:/home/rstudio/data \
--name rstudio asachet/shiny-dev
echo Copying over rstudio settings
docker exec rstudio mkdir /home/rstudio/.R/rstudio/keybindings -p
docker cp /home/asac/projects/rstudio-config/user-settings rstudio:/home/rstudio/.rstudio/monitored/user-settings
docker cp /home/asac/projects/rstudio-config/rstudio_bindings.json rstudio:/home/rstudio/.R/rstudio/keybindings/rstudio_bindings.json
echo Launching browser
xdg-open http://localhost:8787
With RStudio v1.3, there is a new file ~/.config/rstudio/rstudio-prefs.json
which controls all of the settings. You can copy it between machines or hand-edit it.
More details in the RStudio Server PR which got ported to RStudio in version 1.3.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With