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 Python, referencing it by its name and tag.

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 Spotfire Service for Python.

Prerequisites

  • You must have Docker installed on the computer running the node manager. If you install and start Spotfire Service for Python 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 Spotfire Server can be on different computers).
  • You must have access to the internet.
Custom docker images for the Python service must contain the following.
  • The Java 11 Runtime.
  • The JAVA_HOME environmental variable, correctly defined.
    ENV JAVA_HOME=</correct/path/to/java>

Procedure

  1. If you have already installed Spotfire Service for Python from the Spotfire Server Nodes & Services 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 Spotfire Service for Python runs. Many text editors can perform end-of-line (EOL) conversion.
    ############################################
    # A sample Dockerfile for a startup script. #
    #############################################
    FROM centos:7.7.1908
    #  install openjdk
    RUN yum update -y && yum install -y java-11-openjdk && yum clean all
    #  set JAVA_HOME variable
    ENV JAVA_HOME=/usr/lib/jvm/jre
  3. 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 pysrv:258 .
  4. On the computer running Spotfire Server, export the custom.properties as described in steps 1-3 of Configuring Spotfire Service for Python.
  5. Edit the settings in the file custom.properties, specifying the name and tag of your custom image.
    use.engine.containers: TRUE
    docker.image.name: <name:version>
    
  6. On the computer running Spotfire Server, import the custom.properties as described in Configuring Spotfire Service for Python.
  7. From the Spotfire Server Nodes & Services page, install the service, specifying the configuration to use, and then start the service.
    See Installing a Spotfire Service for Python instance on a node manager for a Spotfire Server for more information.

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

What to do next

If problems occur, troubleshoot by examining the Dockerfile that Spotfire Service for Python writes. After the service runs, this Dockerfile is available at the root service directory on the computer running the node manager. For example, /opt/tibco/tsnm/<server version_#>/nm/services/Python service Linux-<version_#_ID>/dockerfile/Dockerfile