Spotfire® Service for R Installation and Administration

Configuring a custom Docker image on a node with internet access

If you have access to the internet, then you can build a Docker image for your Spotfire Service for R, referencing it by its name and tag.

About this task

Perform this task from the command line on the computer where your Spotfire Server is installed. Some steps are performed on the computer where the node manager is installed. (This can be a different computer.)

You can create the custom configuration before installing the Spotfire Service for R.

Before you begin

  • You must have Docker installed on the computer running the node manager. If you install and start the service before you install Docker, then exceptions are written to the log.
  • You must have a Linux computer where the node manager is installed. (Your node manager and the Spotfire Server are usually on different computers).
  • If you are using the script to build the base Docker image, you must have a connection to the internet. (A connection to the internet is not required if you are using a locally-available Docker image.)

Procedure

  1. If you have already installed the service from the Spotfire Server Nodes & Services administration page, and if it is running, then stop the service.
  2. On the node manager computer, create a new directory called docker. Inside that directory, create your Dockerfile.
    Important: Remember that for any script you write, the line endings must be appropriate for the operating system where the service runs. Many text editors can perform end-of-line (EOL) conversion.
    #############################################
    # A sample Dockerfile for installing JDK. #
    #############################################
    FROM debian:12-slim
    RUN apt update -y \
      && apt upgrade -y \
      && apt install -y  \
      ca-certificates \
      && apt install -y --no-install-recommends \
      && apt clean all 
    #  install jdk
    RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget apt-transport-https gpg \
           && wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null \
           && echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \
           && DEBIAN_FRONTEND=noninteractive apt-get update \
           && DEBIAN_FRONTEND=noninteractive apt-get install -y temurin-21-jdk \
           && apt-get clean all
           
    #  set JAVA_HOME variable
    ENV JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-amd64
  3. Install open-source R.
    # Install required packages
    RUN apt install -y gnupg \
      && gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key '95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7' \
      && gpg --armor --export '95C0FAF38DB3CCAD0C080A7BDC78B2DDEABC47B7'   | tee /etc/apt/trusted.gpg.d/cran_debian_key.asc \
      && echo deb http://cloud.r-project.org/bin/linux/debian bookworm-cran40/ > /etc/apt/sources.list.d/r-project.list \
      && apt update -y \
      && apt install -y --no-install-recommends \
      wget \
      r-base-core=4.5.* \
      r-base-dev=4.5.* \
      r-recommended=4.5.* \
      && apt clean all
  4. On the computer running the node manager, build the image with the name and tag.
    The name and tag are comprised as <name:version>, as follows:
    docker build -t rsrv:258 .
  5. On the computer running the Spotfire Server, export the service configuration file custom.properties:
    config export-service-config --capability=R --deployment-area=<your deployment area name>
    See the export-service-config page in the Spotfire® Server and Environment - Installation and Administration guide for more information.
  6. Edit the settings in the custom.properties file, specifying the name and tag of your custom image.
    use.engine.containers: TRUE
    docker.image.name: <name:version>
    
  7. On the computer running the Spotfire Server, import the service configuration:
    config import-service-config --config-name=<new-config-name>
    See the import-service-config page in the Spotfire® Server and Environment - Installation and Administration guide for more information.
  8. From the Spotfire Server Nodes & Services administration page, install the service, specifying the configuration to use, and then start the service.

    If you have already installed the service, then, under the node manager, select the service and click Edit. From the Configuration drop-down list, select the new configuration.

If problems occur, troubleshoot by examining the Dockerfile that the service writes. After the service runs, this Dockerfile is available at the root service directory on the computer running the node manager. For example, /opt/nodemanager/<version>/nm/services/<language>-service-linux-<version_#_ID>/dockerfile/Dockerfile.