If your node manager does not have external access to the
internet, then you can create a Docker image on an internet-enabled computer,
and then transfer it to your node manager.
About this task
Perform the first
three steps of this task from the command line on a computer with internet
access. Perform the rest of the task from the command line on the computer
where your node manager is installed.
Before you begin
- 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.)
- You must have a Linux
computer where the node manager is installed. (Your node manager and the
Spotfire Server are usually on different computers).
- 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.
Custom docker images for the service must
contain the following.
Procedure
-
On a computer with internet access, create the
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
# 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/).
-
Build the image specifying the name and tag.
Use the command
docker build -t
<name:version>
, as follows:
docker build -t pysrv:258 .
-
Save the image to a
.tar file.
Use the command
docker save -o
<name-version>.tar
<name:version>
, as follows:
docker save -o pysrv-258.tar pysrv:258
-
If you have already installed the service from the Spotfire Server
Nodes & Services administration page, and
if it is running, then stop the service.
-
Transfer the
.tar file to the target computer (where the node
manager is running).
-
Load the
.tar file into the node manager.
Use the command
docker load -i
<name-version>.tar
, as follows:
$ sudo docker load -i pysrv-258.tar
f2419d350464: Loading layer [==================================================>] 329.5MB/329.5MB
Loaded image: pysrv:258
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pysrv 258 9941b68e7f65 17 hours ago 517MB
-
On the computer running the Spotfire Server, export the
custom.properties.
-
Edit the settings in the file
custom.properties, specifying the name and tag
of your custom image, and indicating that the docker image identifier should be
used directly, without building an image on top of it.
-
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.