Quick note about running Marginalia Search in a non-docker environment.

Beware that this installation mode is more of a proof-of-concept and demonstration that the
system is not unhealthily dependent on docker, than a production-ready setup, and is not
recommended for production use!  The container setup is much more robust and easier to manage.

Note: This script only sets up an install directory, and does not build the system.
You will need to build the system with "gradlew assemble" before you can run it.

Each service is spawned by the same launcher.  After building the project with
"gradlew assemble", the launcher is put in "code/services-core/single-service-runner/build/distributions/marginalia.tar".
This needs to be extracted!

Note: The template sets up a sample (in-docker) setup for mariadb and zookeeper.  These can also be run outside
of docker, but you will need to update the db.properties file and "zookeeper-hosts" in the system.properties
file to point to the correct locations/addresses.

Running:

To launch a process you need to unpack it, and then run the launcher with the
appropriate arguments.  For example:

WMSA_HOME=/path/to/install/dir marginalia control:1 127.0.0.1:7000:7001 127.0.0.2

This command will start the control partition 1 on ports 7000 (HTTP) and 7001 (GRPC),
bound to 127.0.0.1, and it will announce its presence to the local zookeeper
instance on 127.0.0.2.

A working setup needs at all the services

* control [ http port is the control GUI ]
* query [ http port is the query GUI ]
* index [ http port is internal ]

Since you will need to manage ports yourself, you must assign distinct ports-pairs to each service.

* An index service should exist on the same partition e.g. index:1. The partition
number is the last digit of the service name, and should be positive.

* The query service can use any partition number.

* The control service should be on partition 1.
