Docker image with Mule ESB on Debian Linux and OpenJDK Java 8.
Before building with Maven, the docker.host.url property in the pom.xml file needs
to be set to the URL on which the Docker daemon API is exposed.
To build a Docker image for a particular version of the Mule ESB, use docker:build with the appropriate profile. Example:
mvn -Pmule-4.0.0 docker:build
In order for the time of the container to be synchronized (using ntpd), it must be run with the SYS_TIME capability. In addition you may want to add the SYS_NICE capability, in order for ntpd to be able to modify its priority.
Example:
docker run --cap-add=SYS_TIME --cap-add=SYS_NICE ivankrizsan/mule-docker:latest
- /opt/mule-standalone/logs - Log output directory.
- /opt/mule-standalone/config - Directory containing configuration for applications, domains etc.
- /opt/mule-standalone/apps - Deployment directory for Mule applications.
- /opt/mule-standalone/domains - Deployment directory for Mule domains.
- SET_CONTAINER_TIMEZONE - Whether to set the timezone of the Docker container when starting it. Default is true.
- CONTAINER_TIMEZONE - Timezone to use in container. Default is Europe/Stockholm.
- MULE_EXTERNAL_IP - External IP address of the Docker container. On Mac and Windows this will be the Docker machine's IP address. If not set, an attempt will be made to use the IP address of the container once it is started. This IP address is used to expose JMX of the Mule ESB instance running in the Docker container.
Example:
docker run -e "SET_CONTAINER_TIMEZONE=true" -e "CONTAINER_TIMEZONE=Europe/Stockholm" -e "MULE_EXTERNAL_IP=192.168.99.100" -p "1099:1099" ivankrizsan/mule-docker:latest
- 8081 - Default HTTP port.
- 1099 - JMX port.
- 8899 - Jolokia HTTP service port.
To monitor a Mule ESB instance running in a Docker container, use the following JMX service URL:
service:jmx:rmi:///jndi/rmi://192.168.99.100:1099/jmxrmi
Note that the IP address may need to be updated and the port number depends on the port mapping configuration when the container was launched.
Jolokia is installed in the Mule ESB running in containers created from this Docker image. Its HTTP API is exposed on the Jolokia HTTP service port as listed above. To change this port, modify the mule-config.xml file in the jolokia-enabler Mule application. For more information on Jolokia, please refer to https://jolokia.org/
The Docker image containing version 4 of Mule ESB will not have Jolokia installed.