Skip to content

TethysDash Docker Images

Note

As of April 2023, the main components of the TethysDash system started to be released in separate docker images. (The database image, "tdpostgres", has always been released separately.)

The overall TethysDash system comprises separate components, each available in a corresponding docker image:

The new separation facilitates a more flexible and streamlined release workflow, where each component can be updated in a more independent fashion. This new scheme is also intended to facilitate incorporating other components in the future.

Homepage component: mbari/okeanids

This component is not specific to the MBARI instance, but one that offers a generic landing page with links to the other components in the system as well as to relevant documentation sites. (The MBARI instance uses it with some customization.)

Image versioning

For each docker image release for a component, the following image tags are generated and pushed to the registry: X.Y.Z, X.Y, X, and latest. Each component may get new releases without necessarily involving updates in others. For the intimately related backend and frontend components (mbari/tethsydash and mbari/lrauv-dash), we strive to keep compatibility at the major.minor version level. Please refer to the relevant release notes for details, or get in touch in case of questions.

Docker Compose

What follows is a general template of how the various components can be specified using docker-compose, as well as an Apache configuration that can be used as a basis to expose the components under a common domain.

Note

It is assumed that the "visible" components (that is, those externally accessible by users and vehicles) will be exposed with paths directly under the root of your domain (/home, /dash4, /TethysDash).

  • The image versions are generically written as <version> in the spec below, but they are image specific, that is, not implying that the same version must be used for all images. In general, however, you can use the same major.minor, e.g., 4.40, in particular, for the mbari/tethsydash and mbari/lrauv-dash images.
  • As it rarely changes, the mbari/tdpostgres image is a bit of an exception to the above: we simply indicate the explicit version here.
  • The various environment variables for the backend services are explained elsewhere in this documentation site.
version: '3.7'

services:
  ############################################
  ### Homepage (optional)
  ############################################
  okeanids:
    image: index.docker.io/mbari/okeanids:<version>
    container_name: okeanids
    restart: unless-stopped
    ports: ['4010:80']
    command: ['--log-level', 'info']  # optional

  ############################################
  ### Frontend: dash4
  ############################################
  dash4:
    image: index.docker.io/mbari/lrauv-dash:<version>
    container_name: dash4
    restart: unless-stopped
    ports: ['4020:80']
    command: ['--log-level', 'info']  # optional

  ############################################
  ### Backend: TethysDash
  ############################################
  tethysdash:
    image: index.docker.io/mbari/tethysdash:<version>
    container_name: tethysdash
    restart: unless-stopped
    depends_on:
      - tdpostgres

    volumes:
      - ${TETHYSDASH_CONFIG_DIR}:/opt/tethysdash/conf
      - ${TETHYSDASH_DATA}:/opt/tethysdash/data
      - ${TETHYSDASH_EMAILLOGS}:/usr/local/tomcat/webapps/emaillogs
      - ${TETHYSDASH_LOGS}:/usr/local/tomcat/logs
      - ${LRAUV_REPOS}:/opt/tethysdash/lrauv-repos

    ports: ['8080:8080']

    environment:
      - PG_TD_PASSWORD


  ############################################
  ### Backend: Database
  ############################################
  tdpostgres:
    image: index.docker.io/mbari/tdpostgres:9.4.19
    container_name: tdpostgres
    restart: unless-stopped

    volumes:
      - ${POSTGRES_DATA}:/var/lib/postgresql/data

    environment:
      - POSTGRES_PASSWORD
      - PG_TD_PASSWORD

Apache config

  #------------------------------------------------------------------
  # Homepage:
  RedirectMatch     "^/?$"  /home
  <Location /home>
    ProxyPass         http://localhost:4010/home
    ProxyPassReverse  http://localhost:4010/home
  </Location>
  #------------------------------------------------------------------

  #------------------------------------------------------------------
  # Dash4 frontend:
  <Location /dash4>
    ProxyPass         http://localhost:4020/dash4
    ProxyPassReverse  http://localhost:4020/dash4
  </Location>
  #------------------------------------------------------------------

  #------------------------------------------------------------------
  # TethysDash backend:
  <Location /TethysDash>
    ProxyPass         http://localhost:8080/TethysDash
    ProxyPassReverse  http://localhost:8080/TethysDash
  </Location>
  #------------------------------------------------------------------