-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy_docker.R
105 lines (74 loc) · 3.89 KB
/
deploy_docker.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#############################################################
### EXAMPLE CODE TO PROGRAMATICALLY
### - CREATE A DIGITAL OCEAN (DO) CLOUD SERVER
### - GET THE IMAGE FROM DOCKER HUB AND
### - DEPLOY AND RUN YOUR DOCKER APP
### USING THE ANALOGSEA PACKAGE
#############################################################
# Initialize names -------------------------------------------------------
# Copy the image name from hub.docker.com
your_repo_name <- "pjastam/shiny-speedskating:latest"
# Set names stored at your client
your_client_keyname <- "test-keyname" # the name of the private key at your client
# Just choose some names that you like for stuff at the server
your_droplet_name <- "test-droplet" # this name will appear in your DO list of droplets
your_container_name <- "test-container"
# Make connection to DO account -------------------------------------------
#install.packages("ssh")
#install.packages("analogsea")
library(ssh)
library(analogsea)
# Test your DO connection
analogsea::droplets()
# You are redirected to log into your DO account and authorize analoguesea
# If successful, you can now send the deployment commands to DO
# Create a Docker droplet -------------------------------------------------
# Do not forget to delete it with droplet_delete() when you're done
d <- docklet_create(name = your_droplet_name,
size = "s-1vcpu-1gb",
region = "ams3")
d <- droplet(d$id)
d
# Put OpenSSH private key in local directory ------------------------------
# The public portion of the standard SSH key is automatically deployed
# on the new server upon creation. This holds under the assumption that
# you already have a public/private key pair stored in your DO account.
# Otherwise, you have to create such a key pair yet.
# Now you have to make sure that the private portion of this standard key is
# stored in your local folder. Next, set the location of this folder in the
# loc_keyfile variable below.
# Note that the analogsea package assumes OpenSHH private key files.
# This is detailed in the help menu of ssh_connect (package: ssh).
# If you open your private key file in a text editor, the first line
# must be: -----BEGIN RSA PRIVATE KEY-----.
#
# To convert a Putty key (.ppk format), open it in the PuttyGen utility
# and go to Conversions -> Export OpenSSH.
# Download the image from Docker Hub --------------------------------------
d %>% docklet_pull(repo = your_repo_name,
ssh_user = "root",
keyfile = ssh_home(your_client_keyname))
d %>% docklet_images()
# Run the Docker image ----------------------------------------------------
d %>% docklet_run(
name = your_container_name,
repo = paste("-d -p 80:80", your_repo_name),
rm = "TRUE",
ssh_user = "root",
keyfile = loc_keyfile
)
# Check the list of containers after escaping ------------------------------------
d %>% docklet_ps(all = TRUE)
# Stop containers running -------------------------------------------------
d %>% docklet_stop(container = your_container_name)
# Remove inactive containers ----------------------------------------------
#d %>% docklet_rm(container = your_container_name) # cmd not useful if rm = "TRUE" in docklet_run
# Delete the droplet alltogether ----------------------------------------
d %>% droplet_delete()
# References --------------------------------------------------------------
# - Analogsea package: https://github.com/sckott/analogsea
# - Example guide for deploying Plumber API to a DO droplet: https://www.rplumber.io/articles/hosting.html#digitalocean-1
# - Quickstart to connect to DO droplets: https://www.digitalocean.com/docs/droplets/quickstart/
# - How to set up new SSH key pairs: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
# - Which SSH keys are in your DO account: go to Settings > Security > SSH Keys
# - SSH client for R: https://cran.rstudio.com/web/packages/ssh/vignettes/intro.html