--- title: "Mount other volumes in the container" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{ac-docker-volumes} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = TRUE ) ``` ```{r setup} library(devindocker) ``` If you want to mount other volumes inside the Docker container, you can use parameter `volumes`. This requires a data.frame with two columns named `local` and `docker`. - `local` contains path to local computer - `docker` contains path inside the docker container linked to local ## Create directories to mount in the Docker The main project directory will be directly accessible at the root of RStudio server inside the Docker. It is called in `path` parameter. ```{r} tempdir <- tempdir() my_project <- normalizePath(file.path(tempdir, "myproject"), mustWork = FALSE) dir.create(my_project) ``` The following directory will be mounted inside the Docker container at a chosen place. In this example, we will link the additional directory inside RStudio home directory (aside the main project). ```{r} my_additional <- normalizePath(file.path(tempdir, "my_additional"), mustWork = FALSE) dir.create(my_additional) my_additional2 <- normalizePath(file.path(tempdir, "my_additional2"), mustWork = FALSE) dir.create(my_additional2) ``` ## Create the table of correspondance for additional volumes ```{r} volumes <- data.frame( local = c(my_additional, my_additional2), docker = c("/home/rstudio/my_additional", "/home/rstudio/my_additional2") ) ``` ## Launch Docker with other volumes ```{r, eval=FALSE} # Which container with RStudio server? ---- container <- "rocker/geospatial:4.0.1" # Which port ? ---- # _Useful if multiple Rstudio Server to launch port <- 8788 # Start Docker project launch_proj_docker(path = my_project, container = container, port = port, volumes = volumes) # Stop Docker properly stop_proj_docker(path = my_project, sleep = 5) ```