Title: | Containerize R Markdown Documents for Continuous Reproducibility |
---|---|
Description: | Persistent reproducible reporting by containerization of R Markdown documents. |
Authors: | Nan Xiao [aut, cre] , Miao-Zhu Li [ctb], Teng-Fei Yin [ctb] |
Maintainer: | Nan Xiao <[email protected]> |
License: | GPL-3 | file LICENSE |
Version: | 0.9.2 |
Built: | 2024-11-06 04:11:23 UTC |
Source: | https://github.com/nanxstats/liftr |
This function checks if Docker was properly installed and discoverable by R and liftr. If still not usable, please start Docker daemon
check_docker_install()
check_docker_install()
TRUE
if Docker was deteted, FALSE
otherwise.
## Not run: check_docker_install() ## End(Not run)
## Not run: check_docker_install() ## End(Not run)
This function checks if the Docker daemon is running.
check_docker_running()
check_docker_running()
TRUE
if Docker daemon is running, FALSE
otherwise.
## Not run: check_docker_running() ## End(Not run)
## Not run: check_docker_running() ## End(Not run)
This function guides you to install Docker (Engine).
install_docker()
install_docker()
https://docs.docker.com/engine/installation/
## Not run: install_docker() ## End(Not run)
## Not run: install_docker() ## End(Not run)
Containerize R Markdown documents. This function generates
Dockerfile
based on the liftr metadata in the RMD document.
lift( input = NULL, use_config = FALSE, config_file = "_liftr.yml", output_dir = NULL )
lift( input = NULL, use_config = FALSE, config_file = "_liftr.yml", output_dir = NULL )
input |
Input (R Markdown) file. |
use_config |
If |
config_file |
Name of the YAML configuration file, under the
same directory as the input file. Default is |
output_dir |
Directory to output |
After running lift, run render_docker on the document to
render the containerized R Markdown document using Docker containers.
See vignette('liftr-intro')
for details about the extended
YAML front-matter metadata format used by liftr.
Dockerfile
.
# copy example file dir_example = paste0(tempdir(), '/liftr-minimal/') dir.create(dir_example) file.copy(system.file("examples/liftr-minimal.Rmd", package = "liftr"), dir_example) # containerization input = paste0(dir_example, "liftr-minimal.Rmd") lift(input) ## Not run: # render the document with Docker render_docker(input) # view rendered document browseURL(paste0(dir_example, "liftr-minimal.html")) # purge the generated Docker image purge_image(paste0(dir_example, "liftr-minimal.docker.yml")) ## End(Not run)
# copy example file dir_example = paste0(tempdir(), '/liftr-minimal/') dir.create(dir_example) file.copy(system.file("examples/liftr-minimal.Rmd", package = "liftr"), dir_example) # containerization input = paste0(dir_example, "liftr-minimal.Rmd") lift(input) ## Not run: # render the document with Docker render_docker(input) # view rendered document browseURL(paste0(dir_example, "liftr-minimal.html")) # purge the generated Docker image purge_image(paste0(dir_example, "liftr-minimal.docker.yml")) ## End(Not run)
This function removes stopped containers, all networks not used by at least one container, all dangling images, and all build cache.
prune_all_auto(volumes = FALSE)
prune_all_auto(volumes = FALSE)
volumes |
Logical. Should we prune volumes? Default is |
prune results
https://docs.docker.com/engine/admin/pruning/
## Not run: prune_all_auto() ## End(Not run)
## Not run: prune_all_auto() ## End(Not run)
This function stops and removes the Docker containers used for rendering the R Markdown document based on the output YAML file from the (possibly unsuccessful) rendering process.
prune_container(input_yml) purge_container()
prune_container(input_yml) purge_container()
input_yml |
The YAML file path (output of |
prune results
## Not run: prune_container() ## End(Not run)
## Not run: prune_container() ## End(Not run)
This function prunes all dangling Docker containers automatically.
prune_container_auto()
prune_container_auto()
prune results
https://docs.docker.com/engine/admin/pruning/
## Not run: prune_container_auto() ## End(Not run)
## Not run: prune_container_auto() ## End(Not run)
This function removes the Docker images used for rendering the R Markdown document based on the output YAML file from the (possibly unsuccessful) rendering process.
prune_image(input_yml) purge_image()
prune_image(input_yml) purge_image()
input_yml |
The YAML file path (output of |
prune results
## Not run: prune_image() ## End(Not run)
## Not run: prune_image() ## End(Not run)
This function prunes all dangling Docker images automatically.
prune_image_auto()
prune_image_auto()
prune results
https://docs.docker.com/engine/admin/pruning/
## Not run: prune_image_auto() ## End(Not run)
## Not run: prune_image_auto() ## End(Not run)
Render R Markdown documents using Docker.
render_docker( input = NULL, tag = NULL, container_name = NULL, cache = TRUE, build_args = NULL, run_args = NULL, prune = TRUE, prune_info = TRUE, dry_run = FALSE, ... ) drender(...)
render_docker( input = NULL, tag = NULL, container_name = NULL, cache = TRUE, build_args = NULL, run_args = NULL, prune = TRUE, prune_info = TRUE, dry_run = FALSE, ... ) drender(...)
input |
Input file to render in Docker container. |
tag |
Docker image name to build, sent as docker argument |
container_name |
Docker container name to run. If not specified, will use a randomly generated name. |
cache |
Logical. Controls the |
build_args |
A character string specifying additional
|
run_args |
A character string specifying additional
|
prune |
Logical. Should we clean up all dangling containers,
volumes, networks, and images in case the rendering was not successful?
Default is |
prune_info |
Logical. Should we save the Docker container and
image information to a YAML file (name ended with |
dry_run |
Preview the Docker commands but do not run them?
Useful for debugging purposes. Default is |
... |
Additional arguments passed to
|
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.
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.
# 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) # containerization input = paste0(dir_example, "liftr-tidyverse.Rmd") lift(input) ## Not run: # 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")) ## End(Not run)
# 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) # containerization input = paste0(dir_example, "liftr-tidyverse.Rmd") lift(input) ## Not run: # 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")) ## End(Not run)