--- title: "c_deploy" author: "Colin Fay" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{c_deploy} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} 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: ```{r} 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](https://rtask.thinkr.fr/shinyapp-runapp-shinyappdir-difference/). 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()`. ```{r} 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 ```{r} golem::add_rstudioconnect_file() golem::add_shinyappsio_file() golem::add_shinyserver_file() ``` ### Docker #### without using {renv} ```{r} # 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 ```{r} # 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 ```{r} attachment::create_renv_for_dev(dev_pkg = c( "renv", "devtools", "roxygen2", "usethis", "pkgload", "testthat", "remotes", "covr", "attachment", "pak", "dockerfiler", "golem" )) ``` an activate {renv} with ```{r} renv::activate() ``` #### CASE 2 : you already have a renv.lock file for your project ```{r} # 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