Skip to content

Docker-based SVC-Runner installation

Image layers overview

ITEG-made applications facilitating the svc-runner will be provided as product-specific and often customer-specific Docker images, but they will be based on the core image svc-runner-base and inherit it's basic structure which is described below.

The typical layer structure will look like this:

Image nameTypical tag(s)Content addedMain location
debiantrixie-slimSlim Debian stableDockerhub, everywhere
svc-runner-base1-java21JRE, SVC-Runner, ToolsITEG-Harbor, Dockerhub
svc-runner-itegized1-java21Common ITEG addonsITEG-Harbor
svc-runner-foobeta, prodApplication fooITEG-Harbor
svc-runner-foo-barbeta, prodPreparations for customer barITEG-Harbor, customer registry
Customer specificbeta, prodFinal image-level configurationCustomer registry
- (container)-Orchestration (conf, secrets, volumes, ...)Docker runtime environment

SVC-Runner on Dockerhub

The base image should always available publicly. Running the base image isn't too useful, but it allows to prepare a deploy toolchain. We plan to add a hello world application soon.

The core image is publicly available from Dockerhub as clazzesorg/svc-runner-base.

The default :latest tag is sometimes used for "latest stable", sometimes for "latest commit by the new intern" (or worse, AI). To avoid this ambiguity we decided to go with tags based on the generation, beta or prod, and variants or flavours, see svc-runner-base tags for a complete list.

ITEG-Harbor

The main home for product images is ITEG's own registry, currently a Harbor installation.

For security reasons access to ITEG's Harbor registry is restricted by client IP address and user/password resp. tokens.

Customers can choose between getting pull access to our Registry and providing push access to their own registry.

Details of image svc-runner-base

Volumes

The main volumes are:

Volume resp. file(s)Content and non-contentRemarks
/etc/default/svc-runner-extras*Scripts for picking up environment variablesSourced by /etc/default/svc-runner
/etc/svc-runner/adm.d.override/ resp. *.yamlOptional instance specific configurationsFor examples look in /etc/svc-runner/adm.d/*.yaml
/etc/svc-runner/adm.d/ resp. *.yamlDefault configurationsDon't touch, use as templates for adm.d.override/
/etc/svc-runner/ssh.d/Directory for following files for SSH daemonOK to mount whole directory read-only if filled
/etc/svc-runner/ssh.d/authorized_keysPublic parts of permitted SSH keysSee below and man autorized_keys
/etc/svc-runner/ssh.d/ssh_host_ed25519_keyPrivate part of host key for SSH daemonCreate once per instance, then keep stable
/etc/svc-runner/ssh.d/ssh_host_ed25519_key.pubPublic part of host key for SSH daemonCreate once per instance, then keep stable
/usr/local/share/ca-certificates/, *.cer, *.pemCustom CA certificatesRequires USE_SYSTEM_CA_CERTS=1 to be respected
/certificates/Same, for backwards compatibilityRequires USE_SYSTEM_CA_CERTS=1 to be respected
/usr/share/svc-runner/drivers/*.jarAdditional database driversCommon database drivers are provided in the image

More information about the *.yaml files and ssh.d/ content can be found configuration (see SVC-Runner configuration).

When logging to files instead of stdout you might want to mount a logging directory as volume too.

Environment variables and Docker secrets

Important environment variables are:

Environment variableExample contentRemarks
USE_SYSTEM_CA_CERTS11 enables pickup of custom CA certificates
SVCRUNNER_DEBUGfalse, truetrue enables debugging on port 8802
SVCRUNNER_FULL_STACKTRACESfalse, truetrue enables full stacktraces for NPEs
SVCRUNNER_OPTS_EXTRAS-Doracle.net.tns_admin=/etc/svc-runner/oracle.d

Further typical content for SVCRUNNER_OPTS_EXTRAS are memory settings like Xms256m -Xmx1024m and -XX:+ExitOnOutOfMemoryError.

There is also support to use environment variables as well as docker secrets in configuration files, for more see SVC-Runner configuration.

Network ports

The following TCP networks ports are open by default resp. dependend on configuration:

PortProtocolPurposeRemarks
2200SSHDebugging
8800HTTPWeb UI(s)
8802Java debuggingDeep debuggingOnly available if $SVCRUNNER_DEBUG set true