Deploying Apps with {golem}

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>", 
  eval = FALSE
)

About the run_app() function

When launching the app, you might have noticed that the dev/run_dev.R function calls run_app(), which has the following structure:

run_app <- function(
  ...
) {
  with_golem_options(
    app = shinyApp(
      ui = app_ui, 
      server = app_server
    ), 
    golem_opts = list(...)
  )
}

This function might looks a little bit weird, but there's a long story behind it, and you can read more about it there.

But long story short, this combination of with_golem_options & golem_opts = list(...) allows you to pass argument to the function to be used inside the application, from UI or from server side, which you can get with get_golem_options().

run_app(this = "that")
# And in the app 
this <- get_golem_options("this")

The idea is to provide more flexibility for deployment on each platform you want to run your app on.

Deploying Apps with {golem}

The dev/03_deploy.R file contains function for deploying on various platforms.

RStudio Products

golem::add_rstudioconnect_file()
golem::add_shinyappsio_file()
golem::add_shinyserver_file()

Docker

without using {renv}

# If you want to deploy via a generic Dockerfile
golem::add_dockerfile()

# If you want to deploy to ShinyProxy
golem::add_dockerfile_shinyproxy()

# If you want to deploy to Heroku
golem::add_dockerfile_heroku()

using {renv}

CASE 1 : you didn't use renv during developpment process

this functions will create a "deploy" folder containing :

deploy/
+-- Dockerfile
+-- Dockerfile_base
+-- yourgolem_0.0.0.9000.tar.gz
+-- README
\-- renv.lock.prod

then follow the README file

# If you want to deploy via a generic Dockerfile
golem::add_dockerfile_with_renv(output_dir = "deploy")

# If you want to deploy to ShinyProxy
golem::add_dockerfile_with_renv_shinyproxy(output_dir = "deploy")

If you would like to use {renv} during developpement, you can init a renv.lock file with

attachment::create_renv_for_dev(dev_pkg = c("renv", "devtools", "roxygen2", 
  "usethis", "pkgload", "testthat", "remotes", "covr", "attachment", 
  "pak", "dockerfiler","golem"))

an activate {renv} with

renv::activate()

CASE 2 : you already have a renv.lock file for your project

# If you want to deploy via a generic Dockerfile
golem::add_dockerfile_with_renv(output_dir = "deploy",lockfile =  "renv.lock")

# If you want to deploy to ShinyProxy
golem::add_dockerfile_with_renv_shinyproxy(output_dir = "deploy",lockfile =  "renv.lock")

this functions will create a "deploy" folder containing :

deploy/
+-- Dockerfile
+-- Dockerfile_base
+-- yourgolem_0.0.0.9000.tar.gz
+-- README
\-- renv.lock.prod

then follow the README file



Try the golem package in your browser

Any scripts or data that you put into this service are public.

golem documentation built on Oct. 18, 2022, 5:09 p.m.