Zato installation on Docker

  • You can create a quickstart Zato container under Docker Desktop or from the command line.
  • There is no difference in functionality between the two. In either case, you install the same image.
  • The screenshots below show a Mac installation. Under Windows and Linux, the installation steps are the same as on Mac.
  • Download and install Docker Desktop for your operating system

  • On Mac, if you have Apple silicon, make sure to install all the updates for your system because newest Docker versions may be incompatible with upatched macOS systems

  • Start Docker Desktop, look up an image called zatosource/zato-4.1 and pull it to your OS

  • Once the image is pulled, click "play" to start a new container and fill out the settings:
    • The container's name can be "zato"
    • Map port 17010 to 17010
    • Map port 8183 to 8183
    • Add a new environment variable called "Zato_Password". Provide any value and it will become the password to your environment.

  • That concludes the process - the best way to continue is to visit the tutorials now.
  • Download the Zato Docker Quickstart image and create a new container.
sudo docker run --pull=always -it --rm -p 22022:22 -p 8183:8183 -p 11223:11223 -p 17010:17010 \
  --name zato-4.1 -e Zato_Log_Env_Details=True \
  zatosource/zato-4.1
  • Observe the credentials printed on your screen when the container starts up - they will let you log in to your Dashboard.
    • Dashboard: http://localhost:8183
    • Username: admin
    • Password: copy - paste it from the "Dashboard password" key printed on your screen

  • If you do not have Docker logs open and you want to print the credentials, retrieve them by running this command from your host, which will show all the credentials on screen:
sudo docker exec zato-4.1 /bin/bash \
  -c "cat /opt/zato/env/details/all-zato-env-details.txt"
  ---------------------------------------------------------
  | Category           | Value                            |
  ---------------------------------------------------------
  | Dashboard user     | admin                            |
  | Dashboard password | ...                              |
  | IDE user           | ide_publisher                    |
  | IDE password       | ...                              |
  | SSH user           | zato                             |
  | SSH password       | ...                              |
  | Environment path   | /opt/zato/env/qs-1               |
  ---------------------------------------------------------
  | Port Information   | Value                            |
  ---------------------------------------------------------
  | Dashboard port     | 8183                             |
  | Server port        | 17010                            |
  | SSH port           | 2222                             |
  ---------------------------------------------------------
  • That concludes the process - the best way to continue is to visit the tutorials now.

Docker Compose provides a declarative way to define and run your Zato environment with persistent configuration and services.

Prerequisites

  • Docker and Docker Compose installed on your system
  • Clone the blueprint git repository with a sample Zato project structure
git clone https://github.com/zatosource/zato-project-blueprint
cd zato-project-blueprint

Basic setup

Create a docker-compose.yml file in your project directory:

version: '3.8'

services:
  zato:
    image: ghcr.io/zatosource/zato-4.1:latest
    container_name: zato-quickstart
    ports:
      - "8183:8183"
      - "17010:17010"
      - "11223:11223"
      - "22022:22"
    environment:
      - Zato_Password=mypassword
      - Zato_Log_Env_Details=True
    restart: unless-stopped

Start the container:

docker compose up -d

Access your Dashboard at http://localhost:8183: * Username: admin * Password: mypassword

Production setup with persistent configuration

For production environments, mount your project directories to persist configuration and services:

version: '3.8'

services:
  zato:
    image: ghcr.io/zatosource/zato-4.1:latest
    container_name: zato-production
    ports:
      - "8183:8183"
      - "17010:17010"
      - "11223:11223"
      - "22022:22"
    environment:
      - Zato_Dashboard_Password=${ZATO_DASHBOARD_PASSWORD}
      - Zato_IDE_Password=${ZATO_IDE_PASSWORD}
      - Zato_SSH_Password=${ZATO_SSH_PASSWORD}
      - Zato_Log_Env_Details=True
      - Zato_Env_Name=Production
    volumes:
      - ./myproject:/opt/hot-deploy/myproject:ro
      - ./myproject/config/enmasse/enmasse.yaml:/opt/hot-deploy/enmasse/enmasse.yaml:ro
      - ./myproject/config/auto-generated/env.ini:/opt/hot-deploy/enmasse/env.ini:ro
      - ./myproject/config/python-reqs/requirements.txt:/opt/hot-deploy/python-reqs/requirements.txt:ro
    restart: unless-stopped

Create a .env file in the same directory to store passwords:

ZATO_DASHBOARD_PASSWORD=your_secure_password
ZATO_IDE_PASSWORD=your_ide_password
ZATO_SSH_PASSWORD=your_ssh_password

Start the environment:

docker compose up -d

Custom port configuration

Override default ports to avoid conflicts:

version: '3.8'

services:
  zato:
    image: ghcr.io/zatosource/zato-4.1:latest
    container_name: zato-custom-ports
    ports:
      - "9000:9000"
      - "18000:18000"
      - "12000:12000"
      - "23000:22"
    environment:
      - Zato_Port_Dashboard=9000
      - Zato_Port_Server=18000
      - Zato_Port_Load_Balancer=12000
      - Zato_Password=mypassword
      - Zato_Log_Env_Details=True
    restart: unless-stopped

External RabbitMQ configuration

Connect to an external RabbitMQ broker:

version: '3.8'

services:
  zato:
    image: ghcr.io/zatosource/zato-4.1:latest
    container_name: zato-external-broker
    ports:
      - "8183:8183"
      - "17010:17010"
      - "11223:11223"
    environment:
      - Zato_Password=mypassword
      - Zato_Broker_Address=rabbitmq.example.com:5672
      - Zato_Broker_Username=zato_user
      - Zato_Broker_Internal_Password=${RABBITMQ_PASSWORD}
      - Zato_Broker_Virtual_Host=/zato.production
      - Zato_Broker_Management_Port=15672
      - Zato_Log_Env_Details=True
    restart: unless-stopped

Monitoring stack

Access monitoring dashboards alongside Zato:

version: '3.8'

services:
  zato:
    image: ghcr.io/zatosource/zato-4.1:latest
    container_name: zato-monitored
    ports:
      - "8183:8183"
      - "17010:17010"
      - "11223:11223"
      - "35672:15672"
      - "33033:3000"
      - "39090:9090"
    environment:
      - Zato_Password=mypassword
      - Zato_Grafana_Password=grafana123
      - Zato_Prometheus_Password=prom123
      - Zato_Log_Env_Details=True
    restart: unless-stopped

Access monitoring: * Grafana: http://localhost:33033 (admin / grafana123) * Prometheus: http://localhost:39090 * RabbitMQ Management: http://localhost:35672

Common commands

View logs:

docker compose logs -f

Stop the environment:

docker compose down

Restart the environment:

docker compose restart

Pull latest image and recreate:

docker compose pull
docker compose up -d --force-recreate

Environment variables reference

For a complete list of available environment variables, see the Environment Variables Reference.

Next steps

Schedule a meaningful demo

Book a demo with an expert who will help you build meaningful systems that match your ambitions

"For me, Zato Source is the only technology partner to help with operational improvements."

— John Adams
Program Manager of Channel Enablement at Keysight