rw-book-cover

Metadata

Highlights

  • There seems to be a subconscious deterrent from using specialised tools like R as part of a production or core tech stack, as if it’s somehow not compatible with other forms of technology. (View Highlight)
  • Which is clealy BS. Over the past year a suprising number of my projects have involved ways to package and integrate complex R code into an existing application. (View Highlight)
  • Docker addresses these challenges by containerizing applications along with their dependencies, ensuring that they run consistently across environments. For R, this means you can create a portable, self-contained environment that includes your scripts, libraries, and configurations—all packaged in a lightweight container. (View Highlight)
    1. Set Up Your R Environment
      Before diving into Docker, start by setting up your R project. Ensure that:
      • Your scripts are modular and well-organized. Below we have a basic setup where the script or code you want to run is in the app.R file.
      • Dependencies are explicitly listed. I suggesting using {renv}, its good practice in general but it also makes installing the required packages a lot easier later on when we write our Dockerfile. (View Highlight)
  • Example or a bare-minimum directory structure:
    my-r-project/

    ├── R/ # other R scripts or function
    ├── data/ # Data files (if applicable)
    ├── Dockerfile # Docker configuration file
    ├── renv.lock # Dependency file
    ├── app.R # Entry point
    └── README.md # Documentation (View Highlight)
  • Key Notes on This Dockerfile:
    Base Image: We use the rocker/r-ver image, which is optimized for R and maintained here.
    System Dependencies: Add system-level dependencies your R packages might require.
    Install R packages: Notice how we are replying on renv’s automated package restoration? (View Highlight)
  • If you are doing serious work, you will likely want to move past cute ASCII art. In these cases you should invest a little more time into ensuring your R workflow is fit for purpose. Here are some resources to help go to the next level:
    • If you want an easy guide to writing better, production quality R code check out my e-book.
    • In particular, if you want to deploy a predictive model endpoint I cover this in the following case study.
    • For a simple example of deploying R as a shiny app using a base Docker image check this repo out.
    • You can even set up your own development environment using Docker. Just follow these steps. (View Highlight)