You can provide a startup script that is installed and configured
on your Spotfire Server build a custom Docker image for your
Spotfire Service for Python.
About this task
Perform this task
from the command line on the computer where your Spotfire Server is installed,
and on the computer where your node manager is installed. For more information
about the startup script, see
Startup script.
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.)
Custom docker images for the
Spotfire Service for Python must contain the following.
Procedure
-
If you have already installed the service from the Spotfire Server
Nodes & Services administration page, and
if it is running, then stop the service.
-
On the computer running the Spotfire Server, export the
custom.properties.
-
On computer running Spotfire Server, create a file called
Dockerfile, and then save it to your custom configuration directory.
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
# install openjdk
RUN apt-get install openjdk-17-jdk && apt-get clean
# set JAVA_HOME variable
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
-
Install Python and pip.
#install the Debian-included Python and the pip package.
RUN apt-get update && apt-get install python-is-python3 python3 python3-pip && apt-get clean
-
Install the spotfire package.
RUN pip install spotfire --break-system-packages
- Optional:
If you need or want to use a Python interpreter that is not
bundled with Spotfire Service for Python, then update the following in the
Dockerfile.
-
Install a compatible Python interpreter. See
Custom Python interpreter
for more information.
-
Set the environment variable
SPOTFIRE_PYTHON_HOME to
the path to the directory for the installed Python interpreter that you want to
use.
-
Using
pip
, install the spotfire Python package
(available at
https://pypi.org/project/spotfire/).
-
On the computer running Spotfire Server, create a custom script to
build the
Dockerfile, and then save it to your custom
configuration directory.
(By default,
<server-installation-dir>/tomcat/spotfire-bin/config/root/conf.)
The following example file is named
customScript.sh.
#!/bin/bash
# Define the image name and tag
IMAGE_NAME="pysrv:customScript"
# Custom configuration files are at relative path conf/FILE
DOCKERFILE_NAME="conf/Dockerfile"
# Command to check if image exists
COMMAND="docker inspect ${IMAGE_NAME}"
# Run the command then check the status code
$COMMAND
RESULT=$?
if [ $RESULT -ne 0 ]; then
# Image did not exist
echo ${IMAGE_NAME} does not exist. Building now...
COMMAND="docker build -f ${DOCKERFILE_NAME} -t ${IMAGE_NAME} ."
echo ${COMMAND}
echo "Building the custom docker image ${IMAGE_NAME} for the python-
service"
$COMMAND
echo "Completed building ${IMAGE_NAME}"
else
# Image exists already
echo The requested image ${IMAGE_NAME} already exists.
fi
-
Edit the relevant properties in the file
custom.properties, specifying using the custom
script.
use.engine.containers: TRUE
docker.image.name: pysrv:customScript
startup.hook.script: conf/customScript.sh
-
On the computer running the Spotfire Server, import the
custom.properties.
-
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.