Skip to content

Docker container for RServe package (for R-Tableau integration)

Notifications You must be signed in to change notification settings

voxpoplabs/docker-rserve

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Containers for Rserve

Rserve allows for R and Tableau (among others) to communicate. However, given that Tableau isn't available for Linux, the majority of Linux users have to run tableau through a VM (or borrow someone's mac?). This container is meant to be a quick way to spin up a background instance of Rserve that Tableau can communicate to, without having to install Rserve on either your host or guest machines.

There are two containers available for pulling,

  1. The bare-metal Rserve server:

    docker pull stevenpollack/docker-rserve

This image contains all the standard R packages available through rocker/r-base as well as Rserve, and has a standard Rserve server (with port 6311 exposed) running as its entrypoint. 2. The demonstrative btug container:

```bash
docker pull stevenpollack/btug
```

This is based off of stevenpollack/docker-rserve, but also contains devtools, BayesianFirstAid, randomForest, RMySQL and hopach R packages (these are used in a tableau workbook to demonstrate ways to integrate R and Tableau). Note that if you want to truly follow along with the notebook, you'll need MySQL installed on your computer. The easiest way to do this is with (again) docker's mysql container:

```bash
docker pull mysql
```

Running the containers:

You'll want to be sure to map the container's port 6311 to your localhost's 6311 and run the container in the background, BEFORE starting Tableau. E.g.

docker run --name BTUG -p 6311:6311 -d stevenpollack/btug

If you are using the docker instance of MySQL, you'll want to link the two containers:

docker run --name MYSQL -p 3306:3306 -e MYSQL_ROOT_PASSWORD=swordfish -d mysql
docker run --name RSERVE --link MYSQL:mysql -p 6311:6311 -d stevenpollack/btug

the first command starts up the MySQL server, and the second command starts up the Rserve serve, but links the MySQL container to it, so we can connect to it upon initialization. (You can see how I wired that up by looking at the btug dockerfile).

N.B., if you want to fork this and do your own crazy stuff, you'll probably want to know how to mess with Rserve. In which case, check out this stackoverflow post for setting the /etc/Rserv.conf file

Connecting Tableau and Rserve:

Regardless of how you're instantiating Rserve, you'll have to use Tableau's GUI, found at Help > Settings and Performance > Manage R Connection to check the connection:

From here, you'll need to find the IP of the server that's running Rserve.

  • If you're running Rserve from R (or RStudio), then the IP is localhost.
  • If you're running Rserve through a docker container (highly recommended), then:
    • if you're on Windows or OS X, you can find the IP with the "URL" returned from the docker-machine ls command. E.g, say you ran docker-machine ls from your terminal and saw

       $ docker-machine ls
       NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
       default   *        virtualbox   Running   tcp://192.168.99.100:2376           v1.10.2
      

      Then, you'd know that your server IP is 192.168.99.100.

    • if you're on Linux, then you're likely running Tableau through a VM. This means that while your host box can access Rserve through localhost, your windows box (the guest) cannot. You need to find out your host box's address. The simplest way to do this is from within the VM (assuming this is windows 8):

      1. right clicking on the Start button (assuming this is Windows 8), and go to Network Connections
      2. double click on your ethernet adapter
      3. click on the connection Details button
      4. find your IPv4 Default Gateway

Once you've got the IP of your Rserve server, you'll need the port. However, unless you've done something special this should just be 6311. Go ahead and click the Test Connection button, and hopefully you'll see a popup saying something like

Successfully connected to the Rserve service.

If you encounter any errors and you're running Rserve through a container, be sure to check that you've started Rserve with remote=TRUE (from within R):

Rserve::run.Rserve(remote=TRUE)

About

Docker container for RServe package (for R-Tableau integration)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dockerfile 100.0%