Docker Deployment Guide
Step-by-step guide to deploying ZigiOps using Docker. Learn how to run, upgrade, roll back, and configure the ZigiOps container image.
ZigiOps can be deployed as a self-hosted Docker container, bundling all required services into a single image. This deployment model is suited for organizations that use containerized infrastructure and want a portable, self-managed ZigiOps installation.
The Docker image includes the following ZigiOps services:
Platform
Frontend
Persistence
Troubleshooting
All services start sequentially inside the container. Startup typically takes 1-2 minutes.
Prerequisites
Before you begin, make sure the following requirements are met:
Docker Engine is installed and running on the target host.
The target host has internet access to download the ZigiOps image archive (or the archive has been transferred manually).
A valid ZigiOps license file has been provided by ZigiWave.
Port 8080 is available on the host for the ZigiOps UI. Additional ports may be needed for listener endpoints.
Downloading the Docker Image
The ZigiOps Docker image is distributed as a .tar archive. Download the image for your target version from the following URL:
Replace {build-number} with the specific version number for your deployment.
After downloading, load the image:
Named Volumes
Named volumes are used so that data survives both container restarts and upgrades. Create the following volumes once and reuse them across all deployments:
zigiops-persistence-conf
/zigiops/persistence/conf
Seeded from image on first run
zigiops-persistence-logs
/zigiops/persistence/logs
Output only
zigiops-troubleshooting-data
/zigiops/troubleshooting/data
Seeded from image on first run
zigiops-troubleshooting-logs
/zigiops/troubleshooting/logs
Output only
zigiops-frontend-logs
/zigiops/frontend/logs
Output only
zigiops-platform-audit
/zigiops/platform/audit
Output only
zigiops-platform-conf
/zigiops/platform/conf
Seeded from image on first run
zigiops-platform-logs
/zigiops/platform/logs
Output only
Note: Volumes marked "Seeded from image on first run" are declared as
VOLUMEin the Dockerfile. Docker copies the default content from the image into the volume automatically the first time the container starts. On subsequent runs, including upgrades, the existing volume content is preserved and the image content is ignored.
Scenario 1: Clean New Deployment
Use this when deploying ZigiOps for the first time on a host with no existing data.
Load the image
Create named volumes
Run once. Skip if volumes already exist.
Run the container
The ZigiOps UI is available at http://<host>:8080 once all services have started.
Scenario 2: Restart
Use this to restart the container without losing any data or configuration. Named volumes ensure all data is preserved automatically.
Or stop and start separately:
Scenario 3: Upgrade
Use this when deploying a new version of ZigiOps over an existing installation. The same named volumes are reused, so all data and configuration is preserved.
Load the new image
Stop and remove the current container
Note: The named volumes are not removed by
docker rm. All data is safe.
Run the new container with the same volumes
Configuration note: The conf volumes (
zigiops-persistence-conf,zigiops-platform-conf) are not re-seeded from the new image during an upgrade. Docker keeps the existing volume content. If the new version introduces changes to default configuration files, those changes must be applied manually.
To inspect what the new image ships as defaults before upgrading:
Rollback
If an upgrade needs to be rolled back, stop the new container and rerun the previous image version with the same volumes:
Useful Commands
Optional Steps
Opening an Additional Custom Port
Some integrations require an extra port to be exposed. Add a -p flag to the docker run command for each additional port needed. Multiple ports can be added by repeating the flag:
Adding a Custom Certificate to the Truststore
Some connected systems use certificates that are not trusted by default. These must be imported into the truststore. The truststore is not a declared VOLUME in the Dockerfile, so the volume must be created and seeded manually before importing the certificate.
Create the truststore volume
Seed the volume with the default truststore from the image
Mount the volume at a separate /target path so the original image path remains accessible for copying:
Import the custom certificate
Place the certificate file (.pem or .cer) on the Docker host, then run keytool inside a temporary container:
Run the container with the truststore volume
Add the truststore volume mount to the docker run command alongside the standard volumes:
Note: The truststore volume persists across restarts and upgrades. Additional certificates can be imported at any time by repeating Step 3 with a different
-aliasvalue, without needing to restart the container.
Related Documentation
Last updated
Was this helpful?