Render R Markdown documents using Docker.

  input = NULL,
  tag = NULL,
  container_name = NULL,
  cache = TRUE,
  build_args = NULL,
  run_args = NULL,
  prune = TRUE,
  prune_info = TRUE,
  dry_run = FALSE,




Input file to render in Docker container.


Docker image name to build, sent as docker argument -t. If not specified, it will use the same name as the input file.


Docker container name to run. If not specified, will use a randomly generated name.


Logical. Controls the --no-cache argument in docker run. Setting this to be TRUE can accelerate the rendering speed substantially for repeated/interactive rendering since the Docker image layers will be cached, with only the changed (knitr related) image layer being updated. Default is TRUE.


A character string specifying additional docker build arguments. For example, --pull=true -m="1024m" --memory-swap="-1".


A character string specifying additional docker run arguments. For example, --privileged=true.


Logical. Should we clean up all dangling containers, volumes, networks, and images in case the rendering was not successful? Default is TRUE.


Logical. Should we save the Docker container and image information to a YAML file (name ended with .docker.yml) for manual pruning or inspections later? Default is TRUE.


Preview the Docker commands but do not run them? Useful for debugging purposes. Default is FALSE.


Additional arguments passed to render.


  • A list containing the image name, container name, and Docker commands will be returned.

  • An YAML file ending with .docker.yml storing the image name, container name, and Docker commands for rendering this document will be written to the directory of the input file.

  • The rendered output will be written to the directory of the input file.


Before using this function, please run lift on the RMD document first to generate the Dockerfile.

After a successful rendering, you will be able to clean up the Docker image with prune_image.

Please see vignette('liftr-intro') for details of the extended YAML metadata format and system requirements for writing and rendering containerized R Markdown documents.


# copy example file dir_example = paste0(tempdir(), "/liftr-tidyverse/") dir.create(dir_example) file.copy(system.file("examples/liftr-tidyverse.Rmd", package = "liftr"), dir_example)
#> [1] TRUE
# containerization input = paste0(dir_example, "liftr-tidyverse.Rmd") lift(input) if (FALSE) { # print the Docker commands first render_docker(input, dry_run = TRUE) # render the document with Docker render_docker(input) # view rendered document browseURL(paste0(dir_example, "liftr-tidyverse.pdf")) # remove the generated Docker image prune_image(paste0(dir_example, "liftr-tidyverse.docker.yml"))}