Skip to content

Deployment Without Docker

Andrew MacGaffey edited this page Aug 16, 2026 · 6 revisions

Deployment: Without Docker

Elastic MDS is designed to run as container images, but this is not required. For this purpose each deployment is released as an installation package: an extracted image with a host launcher script, ready to download, configure, and run.

Audience: operators who run software natively rather than in containers. It assumes you have read Deployment: Basics - the deployment model, configuration, and the gateway DNS setup all apply here unchanged.


Why this works

A container image is a filesystem plus a startup script and the environment it expects. Docker is one way to run that - a convenient one - but nothing about the software requires it. The installation package is that filesystem, extracted at build time, with a launcher that supplies the environment. You download it, supply your configuration, and run the launcher; there is no Docker daemon involved.


What you download

Each deployment publishes its installation package as a release asset on its deploy-mf-* repository (for example, deploy-mf-session). Download the release zip and unpack it:

<install-dir>/
  run                  the host launcher
  app/                 the extracted image internals; you do not edit these
  deployment-config/   your configuration: deployment.properties, settings/, resources/
  logs/                log output and the configuration reports

The internals live under app/. What you edit and read - deployment-config/ and logs/ - is at the top level.


Configure it

Configuration is identical to any other deployment: you edit deployment-config/ before starting. deployment.properties and the per-component settings/ files are exactly as described in Configuration: Basics - the package ships the deployment's default configuration, and you change only what your environment requires.

The gateway host and port default to mf-api-gateway:9090. As with every deployment, add a DNS or /etc/hosts entry mapping mf-api-gateway to the host running the gateway (see Deployment: Basics); the launcher prints a notice at startup if you have not set METAFLUENT_API_GATEWAY_HOST/METAFLUENT_API_GATEWAY_PORT, so the default in effect is visible.


Run it

The launcher requires a JDK. Set JAVA_HOME and run ./run:

export JAVA_HOME=/usr/lib/jvm/java-17
./run

run runs as the invoking account - a service user of your choosing - and launches the application in the foreground, which is what a service manager expects. If JAVA_HOME is not set, it stops with a clear error rather than guessing. logs/ must be writable by the account you run as.


Packaging for a managed install

Once you have configured and tested a setup for your environment, you can package the way you normally would:

  • RPM (or .deb) - package the unpacked tree, your configuration, and a service definition as an installable OS package. Lay it under a fixed prefix, for example /opt/elastic-mds/<image>.
  • systemd unit - because run runs in the foreground, a simple service works well: Type=simple, Environment=JAVA_HOME=..., ExecStart=/opt/elastic-mds/<image>/run, running as your service account. systemctl then manages start, stop, restart, and boot.

Either gives you a Docker-free, conventionally managed install, controlled with the same tools as everything else you run.


Where to go next

Clone this wiki locally