Skip to main content
Version: Java (Groovy)

Configure the Deephaven Docker application

This documentation provides user-level details about the Deephaven Docker application construction and configuration. If you are interested in the lower-level details (which may be necessary if you are interested in building your own Docker images from scratch), please see the native application documentation. Some knowledge about Docker is assumed.


The Deephaven Docker application images are based on the native application, which is unpacked into the /opt/deephaven directory. The images have volumes /data and /cache. The images expose port 10000. A configuration file exists at /opt/deephaven/config/deephaven.prop. Additional Java JARs can be included in /apps/libs.

As such, the Deephaven Docker application images set the following bootstrap environment configuration values:

  • DEEPHAVEN_CONFIG_DIR=/opt/deephaven/config
  • EXTRA_CLASSPATH=/apps/libs/*

The Deephaven Docker application images may set the environment variable JAVA_OPTS. The semantics for these options remain the same as it does for the native application — if defined, they are Deephaven recommended arguments that the user can override if necessary. The Deephaven Docker application images will not set the environment variable START_OPTS.

The Python images further have a virtual environment in /opt/deephaven/venv and set the environment value VIRTUAL_ENV=/opt/deephaven/venv.

For more information on the exact construction of the images, the image building logic is located in the repository deephaven-server-docker.


The quickest way to get up and running with the Deephaven Docker application is to run it with the default configuration:

docker run --rm -p 10000:10000

In general, to add additional JVM arguments you'll use START_OPTS.

docker run --rm --env START_OPTS="-Xms4g -Xmx4g"

It's possible that some options you might want to set conflict with the Deephaven recommendations:

$ docker run --rm --env "START_OPTS=-XX:+UseZGC"
Error occurred during initialization of VM
Multiple garbage collectors selected

In this case, you'd need to override JAVA_OPTS:

docker run --rm --env "JAVA_OPTS=-XX:+UseZGC"

While you can use START_OPTS to set system properties, if you find yourself (ab)using system properties to set a lot of Deephaven configuration file values, it may be best to extend the Deephaven image with your own values:

docker run --rm -v /path/to/deephaven.prop:/opt/deephaven/config/deephaven.prop

You can also build your own image with all of the necessary configuration options baked in:

COPY deephaven.prop /opt/deephaven/config/deephaven.prop
ENV EXTRA_CLASSPATH="/apps/libs/*:/opt/more_java_libs/*"
docker build -t my-deephaven-image .
docker run --rm -p 10000:10000 my-deephaven-image

You can also install additional Python dependencies into your own image if desired:

RUN pip install some-awesome-package

Of course, all of these various options can be orchestrated via docker compose as well:

version: '3'

- '10000:10000'

Standard images

  • Python session based, includes jpy, deephaven-plugin, numpy, pandas, and numba
  • Groovy session based

Extended python images:

  • contains the standard packages as well as nltk, tensorflow, torch, and scikit-learn
  • contains the standard packages as well as nltk
  • contains the standard packages as well as torch
  • contains the standard packages as well as scikit-learn
  • contains the standard packages as well as tensorflow