Public | Automated Build

Last pushed: 5 months ago
Short Description
Mule Enterprise Edition (30-day trial) Docker file with support for clustering
Full Description

Docker Image packaging for Mule EE runtime engine

Note: This image uses the 30-day trial version of the Mule runtime.


Basic example of starting a container:

$ docker run rprins/mule-ee

Example of starting the container using HTTP port 8081 mapping and locally mounted data volume:

$ docker run -t -i --name="mule-ee" -p 8081:8081 -v ~/mule/apps:/opt/mule/apps -v ~/mule/logs:/opt/mule/logs rprins/mule-ee

Or, if you wish to start the container in detached mode, use the following command:

$ docker run -d --name="mule-ee" -p 8081:8081 -v ~/mule/apps:/opt/mule/apps -v ~/mule/logs:/opt/mule/logs rprins/mule-ee

Relevant Mule folders and mappings

Location Description Local folder mapping
/opt/mule/apps Mule Application deployment directory ~/mule/apps
/opt/mule/logs Logs directory ~/mule/logs

Exposed ports

Port Description
8081 Default port for HTTP inbound endpoints
7777 MMC Agent default port
5005 Remote debugger default port
9997 Mule Agent default port
1098 JMX default port

Deploying applications

The simplest way of deploying Mule applications is copying a deployable archive (.zip file, created with Anypoint Studio or Maven) to the mapped ~/mule/apps folder.

Alternatively, you can install the Mule Agent and register your Mule runtime with the Anypoint Runtime Manager. Details can be found here. Now you can use the Anypoint Runtime Manager to deploy and monitor Mule applications.

Connecting to a running container

To connect to a running container, you can open a Bash shell

  • First, retrieve the container's ID:
    $ docker ps
  • Check the CONTAINER_ID column of the output
  • Open a Bash shell on the container:
    $ docker exec -t -i <CONTAINER_ID> /bin/bash

Running multiple instances

If you wish to run multiple Docker containers, for example to set up a load balanced runtime environment, make sure the provide a unique name, mount points and HTTP port mapping for each instance.
It is recommended to run the containers in detached mode (using the -d option).

$ docker run -d --name="mule01" -p 8081:8081 -v ~/mule/mule01/apps:/opt/mule/apps -v ~/mule/mule01/logs:/opt/mule/logs mule-ee
$ docker run -d --name="mule02" -p 9081:8081 -v ~/mule/mule02/apps:/opt/mule/apps -v ~/mule/mule02/logs:/opt/mule/logs mule-ee

Setting up a cluster

It is possible to set up a cluster with 2 nodes using Docker Compose:

  • Clone this GitHub repository:
    $ git clone
  • From the location where you cloned the GitHub repo files, navigate to folder cluster
  • To launch the cluster and see logs in console, run:
    $ docker-compose up
  • Or, to launch the cluster in detached mode, run:
    $ docker-compose up -d

This will launch two containers, both with a Mule EE runtime, configured to run in a multicast-enabled cluster.

  • Service mule01:
    • bind mule01:8081 to localhost:8081
    • mount /opt/mule/apps volume to ~/mule/cluster/mule01/apps
    • mount /opt/mule/logs volume to ~/mule/cluster/mule01/logs
  • Service mule02:
    • bind mule02:8081 to localhost:9081
    • mount /opt/mule/apps volume to ~/mule/cluster/mule02/apps
    • mount /opt/mule/logs volume to ~/mule/cluster/mule02/logs

Edit docker-compose.yml to fit your preferred configuration

Docker Pull Command
Source Repository