Docker Images

Sophora Docker Images and Helm charts

Information about Docker images provided by subshell

Sophora Docker images

The available Docker images can be viewed and pulled from our Docker registry at https://docker.subshell.com.

Most of our container images are automatically created by Jenkins, subshell's build server. After each build, the images are released and pushed to the Docker registry. 

All releases are tagged with their release version, as well as the respective major and minor version. A release numbered 4.1.2 would be tagged 4.1.2, 4.1, and 4. All snapshots are each tagged with their branch name, so the current master branch is tagged with the master tag, i.e. the 4.x branch with the 4.x tag and with 4.x-SNAPSHOT.

Most of our Docker images are based on an Alpine Linux image with Zulu JRE 11. To make sure the container images are as small as possible, we use JRE images instead of JDK images. We try to reduce the application size and startup time in the build process of the images by using features from improved Java versions, including Class Data Sharing.

Using the Sophora Docker images

In order to pull-up a Docker image (apart from having Docker installed), you first need to log in to our Docker Registry. You will be asked for your username and password.

~ ❯ docker login docker.subshell.com

After you have successfully logged in, the container image of the Sophora server can be pulled up, for example:

~ ❯ docker pull docker.subshell.com/sophora/sophora-server:4.0.2 
4.0.2: Pulling from sophora/sophora-server 
188c0c94c7c5: Already exists 
d682b0f00ecc: Already exists 
09b6d6b7366f: Pull complete 
7985c45cc140: Pull complete 
9eb276220147: Pull complete 
189f3e261020: Pull complete 
Digest: sha256:d472fa92863419c512a9de26ce185bf26baa42159beb762fc6f5e794858df84b 
Status: Downloaded newer image for docker.subshell.com/sophora/sophora-server:4.0.2 
docker.subshell.com/sophora/sophora-server:4.0.2

The container images do not contain a meaningful configuration of the software. Therefore, a configuration for the corresponding application must always be mounted in each Docker image. Details can be found in the following section.

​​Configuring the applications

The applications running in the Sophora Docker images have to be configured via volume mounts. A local application.yaml is mounted in the container in the correct directory so that the application in the container can read it. 

The following table describes the mount paths for some of the Sophora Docker images.  (The table will be completed and expanded over time).

Configuration of some Sophora Docker images
ApplicationImagePaths for the configuration Paths containing persisted state
Sophora Serversophora/sophora-server
  • /sophora/config/logback.xml
  • /sophora/config/sophora.properties
  • /sophora/repository/repository.xml
  • /sophora/repository
  • /sophora/data
  • /sophora/solr
Admin Dashboardsophora/sophora-dashboard
  • /app/dashboard/config/dashboard-config.json
  • /app/dashboard/config/logback.xml
  • /app/dashboard/persistence
  • /app/dashboard/rrd
Importersophora/sophora-importer
(>= Version 4)
  • /sophora/application.yml
MobileClient (Webclient)sophora/sophora-webclient
  • /app/config/application.yaml
Sophora Indexing Service (SISI)sophora/sophora-indexing-service
  • /app/config/application.yaml
Image Access Servicesophora/sophora-image-access-service
  • /app/config/application.yml
Image Update Servicesophora/sophora-image-update-service
  • /app/config/application.yml
Sophora Metadata Suppliermetadata-supplier/metadata-supplier
  • /app/application.yml
  • /app/plugins/
  • /app/data/mappedResources.json
  • /app/data/usages.json
  • /app/data/lastHandledEventDate.txt

Sophora Helm charts

We provide Helm charts for many of our Sophora components. The Helm charts are located in a public Git repository on Github.com. The Helm charts are published to a GitHubs builtin Chart Registry (based on GHCR) and to Artifact Hubs subshell Repository.To use the charts, the Helm registry must be configured as follows:

~ ❯ helm repo add subshell https://subshell.github.io/helm-charts 
"subshell" has been added to your repositories

The command adds the repository at the given URL with the name "sophora". The name of the repository is only valid on your computer and can be chosen arbitrarily. The Helm charts are always referenced with the name of the repository and the chart name, e.g. sophora/sophora-server. If you call the helm repository sop locally, then the Helm chart name would be sop/sophora-server. The following table shows a list of our Helm registries.

Sophora Helm registries
Name (example)URLContents
subshellhttps://subshell.github.io/helm-chartsAll Helm charts for applications and tools that are closely related to Sophora, e.g. the Sophora Server and all Sophora tools.
subshell-labhttps://subshell.github.io/helm-charts-labHelm charts for subshell side projects.

Deploying the Sophora Docker images in Kubernetes with Helm charts

The following table gives an overview of the available subshell Helm charts. The charts have been tested with Sophora 4.

subshell Helm charts
ApplicationChartNotes
Sophora Serversophora/sophora-serverWhen Sophora Servers are deployed, the system automatically switches the Servers should one of the Sophora Servers be shut down.
Admin Dashboardsophora/sophora-dashboard-old
Sophora Image Servicesophora/sophora-image-serviceThis chart includes both the Image Update Service and the Image Access Service,
Sophora Importersophora/sophora-importerSince a watch folder mechanism does not work in a Kubernetes environment, a S3 bucket is required. The S3 bucket is mounted in the file system via a Kubernetes Sidecar Container. Files can then be imported via the bucket.
Sophora Indexing Service (SISI)sophora/sophora-indexing-serviceRequires a SolrCloud and a Redis cluster for operation. These are available via official Helm charts.
Repository import (via Importer)sophora/sophora-repo-importThis chart is special. It is used to import a Full Admin Export (nodetypes, users, etc.) in order to initialize a new Sophora Server. The export must be downloadable in one or more .zip archives under a Basic Auth protected URL. The archives are downloaded, unzipped, and then imported by a separate Sophora Importer. When the import is complete, all tools involved in the repository import are shut down again. A "job" is deployed in Kubernetes that is only designated for this one-time repository import.
Update sitesophora/sophora-updatesiteThis chart allows you to host an update site on a Nginx server.
MobileClient (Webclient)sophora/sophora-webclient
O-Nekosubshell-tools/o-nekoFor now, this chart is available in subshell's Helm Registry, but may migrate to a public registry at some point, since O-Neko is open source. It requires a MongoDB cluster, which is available through official Helm charts.

Last modified on 2/10/21

The content of this page is licensed under the CC BY 4.0 License. Code samples are licensed under the MIT License.

Icon