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:
- Homepage: mbari/okeanids (optional; see note below)
- Frontend: mbari/dash4
- Backend:
- TethysDash: mbari/tethysdash
- Database: mbari/tdpostgres
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 thembari/tethsydash
andmbari/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>
#------------------------------------------------------------------