name: (character) Name of the droplet. The human-readable string you wish to use when displaying the Droplet name. The name, if set to a domain name managed in the DigitalOcean DNS management system, will configure a PTR record for the Droplet. The name set during creation will also determine the hostname for the Droplet in its internal configuration. Default: picks a random name from words if none supplied.
size: (character) Size slug identifier. See sizes() for a complete list. Default: s-1vcpu-2gb
region: (character) The unique slug identifier for the region that you wish to deploy in. See regions() for a complete list. Default: sfo3
ssh_keys: (character) A character vector of key names, an integer vector of key ids, or NULL, to use all keys in your account. Accounts with the corresponding private key will be able to log in to the droplet. See keys() for a list of the keys that you've added. Default: NULL
backups: (logical) Enable backups. A boolean indicating whether automated backups should be enabled for the droplet. Automated backups can only be enabled when the droplet is created, and cost extra. Default: FALSE
ipv6: (logical) A boolean indicating whether IPv6 is enabled on the droplet.
private_networking: (logical) Use private networking. Private networking is currently only available in certain regions. Default: FALSE
tags: (character) A vector of tag names to apply to the Droplet after it is created. Tag names can either be existing or new tags. Default: list()
wait: If TRUE (default), wait until droplet has been initialised and is ready for use. If set to FALSE we return a droplet object right away after droplet creation request has been sent. Note that there won't be an IP address in the object yet. Note that waiting means we ping the DigitalOcean API to check on the status of your droplet, which uses up your API requests. The option do.wait_time
can be set to any positive integer to determine how many seconds between pings. The default is 1 sec. Note that if you are creating droplets in a loop, parallel or otherwise, set do.wait_time within the loop instead of outside of it.
image: (character/numeric) The image ID of a public or private image, or the unique slug identifier for a public image. This image will be the base image for your droplet. See images() for a complete list. Use rstudio-20-04 for a DigitalOcean Marketplace image with R and Tidyverse readily available. Default: ubuntu-18-04-x64
keyfile: Optional private key file.
...: For docklet_create, additional options passed down to POST. For docklet_run, additional arguments combined and applied to docker statement.
droplet: A droplet, or something that can be coerced to a droplet by as.droplet.
all: (logical) List all containers or images. Default: TRUE
ssh_user: (character) User account for ssh commands against droplet. Default: root
repo: (character) Docker name, can be local to the Droplet or remote, e.g., rocker/rstudio
ssh_passwd: Optional passphrase or callback function for authentication. Refer to the ssh::ssh_connect documentation for more details.
verbose: If TRUE, will print command before executing it.
rm: (logical) Automatically remove the container when it exits. Default: FALSE
container: (character) Container name, can be partial (though has to be unique)
cmd: (character) A docker command (e.g., "run")
args: (character) Docker args
docker_args: (character) Docker args
user: (character) User name. required.
password: (character) Password. required. can not be 'rstudio'
img: (character) Docker image (not a DigitalOcean image). Default: 'rocker/rstudio'
port: (character) Port. Default: 8787
volume: (character) Volume. Can use to bind a volume.
dir: (character) Working directory inside the container.
browse: (logical) If TRUE, open RStudio instance in your default browser.
add_users: (logical) Add users or not when installing RStudio server. Default: FALSE
path: (character) Path to a directory with Shiny app files
Returns
all functions return a droplet
URLs
If you need to figure out the URL for your RStudio or Shiny server instance, you can construct like http://<ip address>:<port> where IP address can most likely be found like d$networks$v4[[1]]$ip_address
and the port is the port you set in the function call.
Managing Docker containers from R
There's a few things to be note about managing Docker containers from analogsea:
To see running containers run docklet_ps(d)
To get get logs run droplet_ssh(d, "docker logs \<container ID\>")
To get a continuous feed of the logs run droplet_ssh(d, "docker logs -f \<container ID\>")
Do not use docker exec -ti as you do not want an interactive session - it will not work from within R. If you log into your DigitalOcean droplet you can do docker exec -ti
To install R package dependencies for a Shiny app, or similar, run droplet_ssh(d, "docker exec \<ID\> R -e'install.packages(\"pkg-name\")'")
where d is your droplet object and \<ID\> is the docker container ID
Missing droplet ID
If you get a droplet object back without an IP address, the IP address was not assigned when the payload was returned by DigitalOcean. Simply run d <- droplet(d$id) to update your droplet object and the IP address will populate.
Examples
## Not run:d <- docklet_create()d <- droplet(d$id)d %>% docklet_pull("dockerpinata/sqlite")d %>% docklet_images()# sqlited %>% docklet_run("dockerpinata/sqlite","sqlite3 --version", rm =TRUE)d %>% docklet_ps()# cowsayd %>% docklet_pull("chuanwen/cowsay")d %>% docklet_run("chuanwen/cowsay", rm =TRUE)# docker imagesd %>% docklet_images()# install various R versions via Rockerd %>% docklet_pull("rocker/r-base")d %>% docklet_pull("rocker/r-devel")d %>% docklet_pull("rocker/r-ver:3.2")d %>% docklet_run("rocker/r-ver:3.2","R --version", rm =TRUE)d %>% docklet_run("rocker/r-ver:3.2","Rscript -e '2 + 3'", rm =TRUE)# Run a docklet containing rstudiod %>% docklet_rstudio(user ="foo", password ="bar")# Delete a dropletd %>% droplet_delete()# Add users to an Rstudio instance## This adds 100 users to the instance, with username/passwords## following pattern user1/user1 ... through 100d <- docklet_create()d <- droplet(d$id)d %>% docklet_rstudio(user ="foo", password ="bar")%>% docklet_rstudio_addusers(user ="foo", password ="bar")# Spin up a Shiny server (opens in default browser)(d <- docklet_create())d %>% docklet_shinyserver()docklet_create()%>% docklet_shinyserver()# Spin up a Shiny server with an app (opens in default browser)d <- docklet_create(); d <- droplet(d$id)path <- system.file("examples","widgets", package ="analogsea")d %>% docklet_shinyapp(path)## uploading more apps - use droplet_upload, then navigate in browser### if you try to use docklet_shinyapp again on the same droplet, it will errorpath2 <- system.file("examples","mpg", package ="analogsea")d %>% droplet_upload(path2,"/srv/shinyapps")# then go to browser## End(Not run)