--- title: "dockerWrapper" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{dockerWrapper} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(OmopStudyBuilder) ``` ## Overview This vignette describes the Docker helper functions in `OmopStudyBuilder`: - `dockeriseStudy()` builds a Docker image for your study - `runRStudio()` starts an interactive RStudio Server session inside the image - `runStudy()` runs your study script in automated mode (streaming logs) - `stopStudy()` stops containers started by `runRStudio()`/`runStudy()` - `pushDockerImage()` tags and pushes your image to Docker Hub All Docker calls require Docker to be installed and the Docker daemon to be running. ## Build an image `dockeriseStudy()` expects an `renv.lock` (and renv activation files) in the directory you point it at. By default it will also snapshot your dependencies before building. ```{r dockeriseStudy-example, eval=FALSE} # From the studyCode folder (or pass path=...) dockeriseStudy( image_name = "my-study", path = "./studyCode", useRStudio = FALSE ) ``` If you want `runRStudio()`, build with an RStudio base image: ```{r dockeriseStudy-rstudio, eval=FALSE} dockeriseStudy( image_name = "my-study", path = "./studyCode", useRStudio = TRUE ) ``` If your `renv.lock` includes GitHub packages and you hit GitHub rate limits during the build, pass a token: ```{r dockeriseStudy-github-token, eval=FALSE} dockeriseStudy( path = "./studyCode", github_token = Sys.getenv("GITHUB_PAT") ) ``` ## Run interactively (RStudio Server) `runRStudio()` runs the Docker image and opens a browser to the RStudio Server URL. Results are written to `results_path` on your host. ```{r runRStudio-example, eval=FALSE} runRStudio( image_name = "my-study", results_path = "./results" ) ``` To pass runtime settings to the container, create a `.env` file in your working directory and it will be used automatically (or provide `env_file = "path/to/.env"`). ## Run in automated mode `runStudy()` executes an R script in the container (default `codeToRun.R`) and streams stdout/stderr to your console. ```{r runStudy-example, eval=FALSE} runStudy( image_name = "my-study", results_path = "./results", data_path = "/path/to/cdm/data", script_path = "codeToRun.R" ) ``` ## Stop containers Use `stopStudy()` to stop containers started by `runRStudio()` and/or `runStudy()`. ```{r stopStudy-example, eval=FALSE} stopStudy(image_name = "my-study") ``` ## Push to Docker Hub `pushDockerImage()` will tag `image_name:latest` and push it to a Docker Hub repository. ```{r pushDockerImage-example, eval=FALSE} pushDockerImage( image_name = "my-study", repo = "yourusername/my-study" ) ```