Zato Docker quickstart installation


  • Docker, any version

Installation steps

  • Download Zato Docker image:
sudo docker pull
  • Create a container in which Zato components will be launched:
sudo docker run --pull=always -it --rm -p 22022:22 -p 8183:8183 -p 11223:11223 \
  --name zato
  • Retrieve your dynamically generated passwords. The first one is to Zato Dashboard at http://localhost:8183, the other is for SSH connections.
sudo docker exec zato /bin/bash -c 'cat /opt/zato/web_admin_password \

That concludes the process - a Dashboard instance is running at http://localhost:8183 and you can log into it with the username of 'admin' using the password printed to the terminal above.

You can also connect via SSH to the container under which Zato is running. User: zato. Password: second one of the two printed on terminal above.

Hot-deployment with mounted volumes

Directory /opt/hot-deploy inside the container can be mapped to a local one on host. Any service placed inside the local directory will be automatically deployed to all servers in the cluster in the container.

For instance, to map local directory /my/services to /opt/hot-deploy in the container, start the container as below:

host$ sudo docker run --pull=always -it --rm -p 22022:22 -p 8183:8183 -p 11223:11223 \
  -v /my/services/:/opt/hot-deploy/ --name zato \

Importing enmasse definitions

A starting container can import enmasse definitions with objects that the cluster running in the container should use.

In this manner, channels, connections and other elements of a cluster's configuration can be recreated each time a new container is spun up.

In order for a container to read in an enmasse file, it needs to be made available to the container through a mounted volume which is next used by the ZATO_ENMASSE_FILE environment variable.

For instance:

  • On host, there is a directory called /my/enmasse
  • In the container, this directory will be mapped to /opt/enmasse
  • Inside the host's directory, there will be an enmasse file called export.yml
  • To automatically import definitions from this file, configuration such as below should be used - mapping volumes and then exporting the file's full location, from the container's perspective, to an environment variable
sudo docker run --pull=always -it --rm -p 22022:22 -p 8183:8183 -p 11223:11223 \
    -v /my/services/:/opt/hot-deploy/  -v /my/enmasse/:/opt/enmasse/ \
    -e ZATO_ENMASSE_FILE=/opt/enmasse/export.yml --name zato \

Environment variables available

The Zato image uses several environment variables which can be used to fine-tune the resulting installation.

They are not required, and default values will be substituted if any is missing, but they may be employed to configure particular details of each of the components.

Variable Notes
ZATO_SSH_PASSWORD Password for user zato to access through ssh. If not defined, the value is generated automatically at runtime.
ZATO_WEB_ADMIN_PASSWORD Password for the web admin’s technical account user to connect with. If not defined, the value is generated automatically at runtime.
ZATO_IDE_PUBLISHER_PASSWORD Password for user ide_publisher, used for IDE integration. If not defined, the value has to be set manually.
ZATO_ENMASSE_FILE Full path to an enmasse file with object definitions to been imported.
REDIS_HOSTNAME Redis service hostname. Default value is localhost.
ODB_TYPE SQL ODB type to use. Must be one of: mysql, postgresql or sqlite. Default value is sqlite.
ZATO_ENMASSE_INITIAL_SLEEP How many seconds to wait before running enmasse after hot-deploying services. Defaults to 30.