How to run One Million UltraESB-X Docker instances… For Free!

Although the title says that you can run 1 million Docker instances, technically you can now run an unlimited number of UltraESB-x Docker instances without spending a single dollar. One million was included with the sole purpose of making the title more attractive since it’s a cliché these days.

AdroitLogic released an UltraESB-X Docker image with its 17.07.1 release. However, most of our customers complained about the hassle they had to go through when obtaining a license.

That’s why we’ve decided to release a Docker image that could be used to run an unlimited number of instances, license-free. Now you can experience UltraESB-X with just a single command!

To continue with the guide, all you need is a working Docker installation. Once Docker is in place, just run:

docker run adroitlogic/ultraesb-x-base:17.07.2

Notice the brand new image name, ultraesb-x-base.

If you need to keep the ESB running in an interactive terminal,

docker run -it adroitlogic/ultraesb-x-base:17.07.2

This time, we’ve released two Docker images; UltraESB-X base image (ultraesb-x-base) and an UltraESB-X complete image (ultraesb-x-complete).

If you just need to try out UltraESB-X, the base image is a pretty decent and lightweight starting point; all facts in my previous blog on the ultraesb-x image are true for ultraesb-x-base as well.

Deploying a project with UltraESB-X

Running an ESB distribution without a project doesn’t make much sense. With our previous release, in order to try out a sample project, a user had to perform a volume mount to get the ESB to pick it up. This can be cumbersome for a non-technical user. That’s why this time we’ve also released a “complete” image with all sample projects. To run a sample project with the UltraESB-x complete image, just specify the sample project with the -sample option:

docker run adroitlogic/ultraesb-x-complete:17.07.2 -sample direct-proxy

You can view all the available sample projects by:

docker run adroitlogic/ultraesb-x-complete:17.07.2 -sample

If you need any help with startup options, just run:

docker run adroitlogic/ultraesb-x-complete:17.07.2 -h

When running the samples in the UltraESB-X image, sometimes you would need to override their configuration properties in order to customize things to work in your environment. For the sample specified in the above example, the properties file resides inside the image, at /opt/ultraesb-x/conf/projects/direct-proxy/

To override the properties, you will have to use a volume mount. For example, if you have your own copy of the direct-proxy sample project on your host machine, at /home/malith/direct-proxy, you could simply mount its default property configuration file (src/main/conf/ into the UltraESB-X runtime, via:

docker run -it  -v /home/malith/direct-proxy/src/main/conf:/opt/ultraesb-x/conf/projects/direct-proxy adroitlogic/ultraesb-x-complete:17.07.2 -sample direct-proxy

Alternatively you could create your own file somewhere on the host machine, and mount it under /opt/ultraesb-x/conf/projects/direct-proxy/, similar to what we have done above.

For example, the following properties are available for the direct-proxy sample project.

    The Hostname of the back-end server (default value is localhost)
  • direct-proxy-flow.egress-connector.port
    The Port of the backend server (default value is 9000)
  • direct-proxy-flow.egress-connector.servicePath
    The Service Path of the backend server (default value is /service/EchoService)
  • direct-proxy-flow.ingress-connector.path
    The Service Path of the proxy listener (default value is /service/direct-proxy)
  • direct-proxy-flow.ingress-connector.port
    The Service Port of the proxy listener (default value is 8280)

Refer to Managing Project Properties documentation for further details on how to override properties.

You might also want to use the -p option of Docker to map the container ports to the ports of the host machine.

For example, since the direct-proxy project listens for messages on port 8280, we also have to map port 8280 of the container to some port (say 9002) of the host machine (using -p) so we can send messages to our project from the host machine:

docker run -it -p 9002:8280 -v /home/malith/direct-proxy/src/main/conf:/opt/ultraesb-x/conf/projects/direct-proxy adroitlogic/ultraesb-x-complete:17.07.2 -sample direct-proxy

And you now have your own Docker-powered UltraESB-X instance, loaded with a fully configured direct proxy, ready for action!


Notify of
Inline Feedbacks
View all comments