Deployment Changes

This page highlights important changes in deployment configuration and services. Review the updates below to ensure compatibility with the latest release.

Target Audience

This is only relevant for users that don't use docker-compose.

Services

Please inspect the docker-compose.yml diff for breaking changes in service deployment. Note that the caddy container is not run from a upstream image anymore but instead is now built from a Dockerfile found in the deployment repository. This migration step is required for TRUST to work correctly.

diff --git a/docker-compose.yml b/docker-compose.yml
index 7f9550d8d..8d3f64658 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,7 +7,7 @@ services:
     travel-autod:
         <<: *21-defaults
         container_name: travel-autod
-        image: registry.21analytics.ch/21analytics/21travel:8.1.0
+        image: registry.21analytics.ch/21analytics/autod:8.2.0
         depends_on:
             - 'travel-trpd'
             - 'travel-aopd'
@@ -33,7 +33,7 @@ services:
     travel-trustd:
         <<: *21-defaults
         container_name: travel-trustd
-        image: registry.21analytics.ch/21analytics/21travel:8.1.0
+        image: registry.21analytics.ch/21analytics/trustd:8.2.0
         depends_on:
             - 'postgres'
         environment:
@@ -54,7 +54,7 @@ services:
     travel-trpd:
         <<: *21-defaults
         container_name: travel-trpd
-        image: registry.21analytics.ch/21analytics/21travel:8.1.0
+        image: registry.21analytics.ch/21analytics/trpd:8.2.0
         depends_on:
             - 'postgres'
         environment:
@@ -75,7 +75,7 @@ services:
     travel-aopd:
         <<: *21-defaults
         container_name: travel-aopd
-        image: registry.21analytics.ch/21analytics/21travel:8.1.0
+        image: registry.21analytics.ch/21analytics/aopd:8.2.0
         depends_on:
             - 'postgres'
         environment:
@@ -115,7 +115,7 @@ services:
     seaweedfs:
         <<: *21-defaults
         container_name: seaweedfs
-        image: docker.io/chrislusf/seaweedfs:4.17
+        image: docker.io/chrislusf/seaweedfs:4.23
         command:
             [
                 # if `server` is the first argument then the container's `entrypoint.sh`
@@ -160,13 +160,24 @@ services:

     beosin:
         <<: *21-defaults
+        restart: on-failure
         container_name: beosin
         depends_on:
             - 'travel-autod'
             - 'keycloak'
         image: beosin
         build:
-            context: beosin
+            context: .
+            dockerfile: Dockerfile
+            args:
+                SERVICE: beosin
+        command:
+            [
+                'CLIENT_SECRET',
+                'CLIENT_ID',
+                'APP_ID',
+                'APP_SECRET',
+            ]
         environment:
             CLIENT_SECRET:
             CLIENT_ID:
@@ -175,13 +186,23 @@ services:

     globalledger:
         <<: *21-defaults
+        restart: on-failure
         container_name: globalledger
         depends_on:
             - 'travel-autod'
             - 'keycloak'
         image: globalledger
         build:
-            context: globalledger
+            context: .
+            dockerfile: Dockerfile
+            args:
+                SERVICE: globalledger
+        command:
+            [
+                'CLIENT_SECRET',
+                'CLIENT_ID',
+                'GL_API_KEY',
+            ]
         environment:
             CLIENT_SECRET:
             CLIENT_ID:
@@ -189,13 +210,23 @@ services:

     merklescience:
         <<: *21-defaults
+        restart: on-failure
         container_name: merklescience
         depends_on:
             - 'travel-autod'
             - 'keycloak'
         image: merklescience
         build:
-            context: merklescience
+            context: .
+            dockerfile: Dockerfile
+            args:
+                SERVICE: merklescience
+        command:
+            [
+                'CLIENT_SECRET',
+                'CLIENT_ID',
+                'MERKLE_SCIENCE_API_KEY',
+            ]
         environment:
             CLIENT_SECRET:
             CLIENT_ID:
@@ -203,13 +234,23 @@ services:

     crystal:
         <<: *21-defaults
+        restart: on-failure
         container_name: crystal
         depends_on:
             - 'travel-autod'
             - 'keycloak'
         image: crystal
         build:
-            context: crystal
+            context: .
+            dockerfile: Dockerfile
+            args:
+                SERVICE: crystal
+        command:
+            [
+                'CLIENT_SECRET',
+                'CLIENT_ID',
+                'CRYSTAL_API_KEY',
+            ]
         environment:
             CLIENT_SECRET:
             CLIENT_ID:
@@ -217,13 +258,22 @@ services:

     rulesengine:
         <<: *21-defaults
+        restart: on-failure
         container_name: rulesengine
         depends_on:
             - 'travel-autod'
             - 'keycloak'
         image: rulesengine
         build:
-            context: rulesengine
+            context: .
+            dockerfile: Dockerfile
+            args:
+                SERVICE: rulesengine
+        command:
+            [
+                'CLIENT_SECRET',
+                'CLIENT_ID',
+            ]
         environment:
             CLIENT_SECRET:
             CLIENT_ID:
@@ -255,7 +305,7 @@ services:
         container_name: keycloak
         depends_on:
             - 'postgres'
-        image: quay.io/keycloak/keycloak:26.5.6
+        image: quay.io/keycloak/keycloak:26.6.1
         volumes:
             - type: bind
               source: ${PWD}/21theme/