... | @@ -23,6 +23,7 @@ Docker [Mule ESB Runtime](https://www.mulesoft.com/ty/dl/mule) container image f |
... | @@ -23,6 +23,7 @@ Docker [Mule ESB Runtime](https://www.mulesoft.com/ty/dl/mule) container image f |
|
|
|
|
|
If you find this image useful here's how you can help:
|
|
If you find this image useful here's how you can help:
|
|
|
|
|
|
|
|
- Send a Merge Request with your awesome new features and bug fixes at https://git.whiteskylabs.com/mulesoft/docker-mule
|
|
- Be a part of the community and help resolve [Issues](https://git.whiteskylabs.com/mulesoft/docker-mule/issues)
|
|
- Be a part of the community and help resolve [Issues](https://git.whiteskylabs.com/mulesoft/docker-mule/issues)
|
|
|
|
|
|
---
|
|
---
|
... | @@ -54,7 +55,7 @@ In your issue report please make sure you provide the following information: |
... | @@ -54,7 +55,7 @@ In your issue report please make sure you provide the following information: |
|
---
|
|
---
|
|
# Prerequisites
|
|
# Prerequisites
|
|
|
|
|
|
Your docker host needs to have at least 2GB (or more) of available RAM to run Mule ESB Server Runtime. Please refer to the Mule ESB [hardware requirements](https://docs.mulesoft.com/mule-user-guide/v/3.8/hardware-and-software-requirements) documentation for additional information.
|
|
Your docker host needs to have at least 2GB (or more) of available RAM to run Mule ESB Server Runtime. Please refer to the Mule ESB [hardware requirements](https://docs.mulesoft.com/mule-user-guide/v/3.9/hardware-and-software-requirements) documentation for additional information.
|
|
|
|
|
|
---
|
|
---
|
|
# Installation
|
|
# Installation
|
... | @@ -63,7 +64,7 @@ Automated builds of the image are available on [Dockerhub](https://hub.docker.co |
... | @@ -63,7 +64,7 @@ Automated builds of the image are available on [Dockerhub](https://hub.docker.co |
|
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
docker pull wslph/mule:3.8.4-ee
|
|
docker pull wslph/mule:3.9.0-ee
|
|
```
|
|
```
|
|
|
|
|
|
Example 1 : Launching Mule ESB Server runtime container for Community Edition
|
|
Example 1 : Launching Mule ESB Server runtime container for Community Edition
|
... | @@ -71,8 +72,8 @@ Example 1 : Launching Mule ESB Server runtime container for Community Edition |
... | @@ -71,8 +72,8 @@ Example 1 : Launching Mule ESB Server runtime container for Community Edition |
|
```bash
|
|
```bash
|
|
docker run --restart=always --name mule-ce -d \
|
|
docker run --restart=always --name mule-ce -d \
|
|
--publish 7777:7777 \
|
|
--publish 7777:7777 \
|
|
--env 'MULE_ENV=stg' \
|
|
--env 'MULE_ENV=dev' \
|
|
wslph/mule:3.8.1-ce && docker logs -f mule-ce
|
|
wslph/mule:3.9.0-ce && docker logs -f mule-ce
|
|
```
|
|
```
|
|
|
|
|
|
Example 2 : Launching Mule ESB Server runtime container for Enterprise Edition
|
|
Example 2 : Launching Mule ESB Server runtime container for Enterprise Edition
|
... | @@ -80,8 +81,8 @@ Example 2 : Launching Mule ESB Server runtime container for Enterprise Edition |
... | @@ -80,8 +81,8 @@ Example 2 : Launching Mule ESB Server runtime container for Enterprise Edition |
|
```bash
|
|
```bash
|
|
docker run --restart=always --name mule-ee -d \
|
|
docker run --restart=always --name mule-ee -d \
|
|
--publish 7777:7777 \
|
|
--publish 7777:7777 \
|
|
--env 'MULE_ENV=stg' \
|
|
--env 'MULE_ENV=dev' \
|
|
wslph/mule:3.8.4-ee && docker logs -f mule-ee
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
```
|
|
```
|
|
|
|
|
|
Example 3 : Attaching container to host network
|
|
Example 3 : Attaching container to host network
|
... | @@ -89,8 +90,8 @@ Example 3 : Attaching container to host network |
... | @@ -89,8 +90,8 @@ Example 3 : Attaching container to host network |
|
```bash
|
|
```bash
|
|
docker run --restart=always --name mule-ee -d \
|
|
docker run --restart=always --name mule-ee -d \
|
|
--net=host \
|
|
--net=host \
|
|
--env 'MULE_ENV=stg' \
|
|
--env 'MULE_ENV=dev' \
|
|
wslph/mule:3.8.4-ee && docker logs -f mule-ee
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
```
|
|
```
|
|
|
|
|
|
*Please refer to [Available Configuration Parameters](#available-configuration-parameters) to understand `MULE_ENV` and other configuration options*
|
|
*Please refer to [Available Configuration Parameters](#available-configuration-parameters) to understand `MULE_ENV` and other configuration options*
|
... | @@ -122,22 +123,110 @@ Volumes can be mounted in docker by specifying the `--volume` option in the dock |
... | @@ -122,22 +123,110 @@ Volumes can be mounted in docker by specifying the `--volume` option in the dock |
|
```bash
|
|
```bash
|
|
docker run --restart=always --name mule-ee -d \
|
|
docker run --restart=always --name mule-ee -d \
|
|
--publish 7777:7777 --publish 1098:1098 --publish 25000:5000 --publish 8081:8081\
|
|
--publish 7777:7777 --publish 1098:1098 --publish 25000:5000 --publish 8081:8081\
|
|
--env 'MULE_ENV=stg' \
|
|
--env 'MULE_ENV=dev' \
|
|
|
|
--env 'MULE_ESB_NAME=My-ESB-Server-01' \
|
|
--env 'MULE_MMC_AGENT_PORT=7777' \
|
|
--env 'MULE_MMC_AGENT_PORT=7777' \
|
|
|
|
--env 'MULE_MMC_URL=http://my-server.example.com/mmc-console' \
|
|
|
|
--env 'MULE_MMC_USERNAME=admin' \
|
|
|
|
--env 'MULE_MMC_PASSWORD=admin' \
|
|
|
|
--env 'MULE_MMC_AGENT_HOST=123.455.234.110' \
|
|
--volume ~/mule/apps:/opt/mule/apps \
|
|
--volume ~/mule/apps:/opt/mule/apps \
|
|
--volume ~/mule/domains:/opt/mule/domains \
|
|
--volume ~/mule/domains:/opt/mule/domains \
|
|
--volume ~/mule/conf:/opt/mule/conf \
|
|
--volume ~/mule/conf:/opt/mule/conf \
|
|
--volume ~/mule/logs:/opt/mule/logs \
|
|
--volume ~/mule/logs:/opt/mule/logs \
|
|
--volume ~/mule/patches:/opt/mule/patches \
|
|
--volume ~/mule/patches:/opt/mule/patches \
|
|
wslph/mule:3.8.4-ee && docker logs -f mule-ee
|
|
--volume ~/mule/.mule:/opt/mule/.mule \
|
|
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
```
|
|
```
|
|
|
|
|
|
The `/opt/mule/patches` volume sole purpose is to copy (before the mule runtime is started) its content to `/opt/mule/lib/user` and applies only to each specific version of mule runtime (e.g., `3.6.2-ee` requires applying `SE-3341-3.6.2.jar` that fixes the mule application filename issue).
|
|
|
|
|
|
|
|
**Applying runtime patch**
|
|
**Applying runtime patch**
|
|
|
|
|
|
The `/opt/mule/patches` volume sole purpose is to copy (before the mule runtime is started) its content to `/opt/mule/lib/user` and applies to specific version of mule runtime (e.g., `3.6.2-ee` requires applying `SE-3341-3.6.2.jar` that fixes the mule application filename issue). This allows maintenance of patch to an existing Mule runtime, requiring only a `docker restart <mule-container>`
|
|
The `/opt/mule/patches` volume sole purpose is to copy (before the mule runtime is started) its content to `/opt/mule/lib/user` and applies to specific version of mule runtime (e.g., `3.6.2-ee` requires applying `SE-3341-3.6.2.jar` that fixes the mule application filename issue). This allows maintenance of patch to an existing Mule runtime, requiring only a `docker restart <mule-container>`
|
|
|
|
|
|
|
|
**Registering to Anypoint Runtime Manager**
|
|
|
|
|
|
|
|
If you want to register your Mule ESB container to Anypoint Platform / Anypoint Runtime Manager, here's an example:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run --restart=always --name mule-ee -d \
|
|
|
|
--publish 1098:1098 --publish 25000:5000 --publish 8081:8081\
|
|
|
|
--env 'MULE_ENV=dev' \
|
|
|
|
--env 'MULE_ESB_NAME=My-ESB-Server-01' \
|
|
|
|
--env 'MULE_ARM_TOKEN=aaabbbcccdddeeefff...' \
|
|
|
|
--volume ~/mule/apps:/opt/mule/apps \
|
|
|
|
--volume ~/mule/domains:/opt/mule/domains \
|
|
|
|
--volume ~/mule/conf:/opt/mule/conf \
|
|
|
|
--volume ~/mule/logs:/opt/mule/logs \
|
|
|
|
--volume ~/mule/patches:/opt/mule/patches \
|
|
|
|
--volume ~/mule/.mule:/opt/mule/.mule \
|
|
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
|
|
```
|
|
|
|
|
|
|
|
**Registering to Mule Management Console**
|
|
|
|
|
|
|
|
If you want to register your Mule ESB container to a MMC server, here's an example:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run --restart=always --name mule-ee -d \
|
|
|
|
--publish 7777:7777 --publish 1098:1098 --publish 25000:5000 --publish 8081:8081\
|
|
|
|
--env 'MULE_ENV=dev' \
|
|
|
|
--env 'MULE_ESB_NAME=My-ESB-Server-01' \
|
|
|
|
--env 'MULE_MMC_AGENT_HOST=123.455.234.110' \
|
|
|
|
--env 'MULE_MMC_AGENT_PORT=7777' \
|
|
|
|
--env 'MULE_MMC_URL=http://my-server.example.com/mmc-console' \
|
|
|
|
--env 'MULE_MMC_USERNAME=admin' \
|
|
|
|
--env 'MULE_MMC_PASSWORD=admin' \
|
|
|
|
--volume ~/mule/apps:/opt/mule/apps \
|
|
|
|
--volume ~/mule/domains:/opt/mule/domains \
|
|
|
|
--volume ~/mule/conf:/opt/mule/conf \
|
|
|
|
--volume ~/mule/logs:/opt/mule/logs \
|
|
|
|
--volume ~/mule/patches:/opt/mule/patches \
|
|
|
|
--volume ~/mule/.mule:/opt/mule/.mule \
|
|
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
|
|
```
|
|
|
|
|
|
|
|
OR
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run --restart=always --name mule-ee -d \
|
|
|
|
--publish 7777:7777 --publish 1098:1098 --publish 25000:5000 --publish 8081:8081\
|
|
|
|
--env 'MULE_ENV=dev' \
|
|
|
|
--env 'MULE_ESB_NAME=My-ESB-Server-01' \
|
|
|
|
--env 'MULE_MMC_AGENT_HOST=123.455.234.110' \
|
|
|
|
--env 'MULE_MMC_AGENT_PORT=7777' \
|
|
|
|
--env 'MULE_MMC_URL=http://my-server.example.com/mmc-console' \
|
|
|
|
--env 'MULE_MMC_HEADER_AUTH=Authorization:Basic YWRtaW46YWRtaW4=' \
|
|
|
|
--volume ~/mule/apps:/opt/mule/apps \
|
|
|
|
--volume ~/mule/domains:/opt/mule/domains \
|
|
|
|
--volume ~/mule/conf:/opt/mule/conf \
|
|
|
|
--volume ~/mule/logs:/opt/mule/logs \
|
|
|
|
--volume ~/mule/patches:/opt/mule/patches \
|
|
|
|
--volume ~/mule/.mule:/opt/mule/.mule \
|
|
|
|
wslph/mule:3.9.0-ee && docker logs -f mule-ee
|
|
|
|
```
|
|
|
|
|
|
|
|
You need to specify the following environment variables:
|
|
|
|
- `MULE_ESB_NAME`
|
|
|
|
- `MULE_MMC_AGENT_HOST`
|
|
|
|
- `MULE_MMC_AGENT_PORT`
|
|
|
|
- `MULE_MMC_URL`
|
|
|
|
- `MULE_MMC_USERNAME` and `MULE_MMC_PASSWORD` OR `MULE_MMC_HEADER_AUTH`
|
|
|
|
|
|
|
|
For further explanation of each environment variable, please take a look at *Available Configuration Parameters* section.
|
|
|
|
|
|
|
|
**IMPORTANT:**
|
|
|
|
|
|
|
|
In order to execute the registration script to MMC server, you need to do the following:
|
|
|
|
```
|
|
|
|
docker exec <container-name> mmc_setup
|
|
|
|
```
|
|
|
|
|
|
|
|
and it will provide a JSON response, which indicates wether registration is successful or not.
|
|
|
|
|
|
|
|
**Developer's Note:**
|
|
|
|
- *At the moment, this is the only way to register to MMC server. If you have a better way of doing this inside the container, I'd be happy to implement it and credit it to you. Thanks!*
|
|
|
|
|
|
|
|
|
|
**Available Configuration Parameters**
|
|
**Available Configuration Parameters**
|
|
|
|
|
|
*Please refer the docker run command options for the `--env-file` flag where you can specify all required environment variables in a single file. This will save you from writing a potentially long docker run command.*
|
|
*Please refer the docker run command options for the `--env-file` flag where you can specify all required environment variables in a single file. This will save you from writing a potentially long docker run command.*
|
... | @@ -147,10 +236,18 @@ Below is the complete list of available options that can be used to customize yo |
... | @@ -147,10 +236,18 @@ Below is the complete list of available options that can be used to customize yo |
|
| Parameter | Description |
|
|
| Parameter | Description |
|
|
|-----------|-------------|
|
|
|-----------|-------------|
|
|
| `MULE_ENV` | by default, its value is `dev`, it can be anything such as `sit`, `stg`, `prd`, or anything. This is accessible within Mule environment and mule application via `${mule.env}` |
|
|
| `MULE_ENV` | by default, its value is `dev`, it can be anything such as `sit`, `stg`, `prd`, or anything. This is accessible within Mule environment and mule application via `${mule.env}` |
|
|
| `MULE_MMC_AGENT_PORT` | This is the port for when you need to register this mule esb container to an MMC server. By default its value is `7777`, but you can change this to use other port (e.g., when you want to have multiple Mule esb runtime container on the same host. |
|
|
| `APP_CONFIG_PATH` | By default its value is empty, but it can be overwritten. However anything set here is relative to `/opt/mule/conf/` . This is accessible within Mule environment and mule application via `${mule.config.path}` |
|
|
| `APP_CONFIG_PATH` | by default its value is empty, but it can be overwritten. However anything set here is relative to `/opt/mule/conf/` . This is accessible within Mule environment and mule application via `${mule.config.path}` |
|
|
| `MULE_STARTUP_ENV_CONFIG` | Useful, when you need to specify some environment variable to mule upon start. For example you can pass a `-M-Dmule.vault.key=mulesoft` parameter. However, that this does not override the other environment variable in this table. |
|
|
| `MULE_STARTUP_ENV_CONFIG` | This is optional. Useful, when you need to specify some environment variable to mule upon start. For example you can pass a `-M-Dmule.vault.key=mulesoft` parameter. However, that this does not override the other environment variable in this table. |
|
|
|
|
| `MULE_ENV_OVERRIDE_DEFAULT` | 0 by default. If set to 1, it will load the existing host resources (e.g., `apps`, `domains`, and `conf`) of the host specified path at `--volume`. |
|
|
| `MULE_ENV_OVERRIDE_DEFAULT` | 0 by default. If set to 1, it will load the existing host resources (e.g., `apps`, `domains`, and `conf`) of the host specified path at `--volume`. |
|
|
|
|
| `MULE_ARM_TOKEN` | If you want to register this container to Anypoint Runtime Manager, pass the token here. |
|
|
|
|
| `MULE_ESB_NAME` | Specify the name you want this container to use at Anypoint Management Center, or Mule Management Console. By default, it will generate its own name with a prefix of `MULE-ESB-` and appended with timestamp to register. |
|
|
|
|
| `MULE_MMC_URL` | Specify the URL where your MMC (Mule Management Console) is hosted (`https://<mmc-host>:<mmc-port>`). For example `https://mydomain.example.com/mmc` |
|
|
|
|
| `MULE_MMC_AGENT_HOST` | Specify the hostname and/or IP address where this server is hosted. For example `my-esb-server.example.com`, or `123.455.234.110` to complete the full url `http://<mmc-host>:MULE_MMC_AGENT_PORT/mmc-support`|
|
|
|
|
| `MULE_MMC_AGENT_PORT` | This is the port for when you need to register this mule esb container to an MMC server. By default its value is `7777`, but you can change this to use other port (e.g., when you want to have multiple Mule esb runtime container on the same host. |
|
|
|
|
| `MULE_MMC_USERNAME` | Specify the username to be used to authenticate to MMC, with premission to create, update, and delete server groups, as well as register new server. Note: If `MULE_MMC_HEADER_AUTH` is specified. This will be ignored. |
|
|
|
|
| `MULE_MMC_PASSWORD` | Specify the password for to be used to authentication. Note: If `MULE_MMC_HEADER_AUTH` is specified. This will be ignored. |
|
|
|
|
| `MULE_MMC_HEADER_AUTH` | Specify the default `header` for authorization to your MMC. Note: When specified, this will disable `MULE_MMC_USERNAME` and `MULE_MMC_PASSWORD`. For example, `Authorization:Basic YWRtaW46YWRtaW4=`|
|
|
|
|
| `MULE_MMC_SERVER_GROUP` | If specified, server will be registered and added into the specified server group. |
|
|
|
|
|
|
---
|
|
---
|
|
# Maintenance
|
|
# Maintenance
|
... | @@ -166,11 +263,13 @@ docker exec -it mule-ee bash |
... | @@ -166,11 +263,13 @@ docker exec -it mule-ee bash |
|
# References
|
|
# References
|
|
|
|
|
|
* For available server runtime version please see [tags](https://hub.docker.com/r/wslph/mule/tags/)
|
|
* For available server runtime version please see [tags](https://hub.docker.com/r/wslph/mule/tags/)
|
|
* [Mule ESB User Guide](https://docs.mulesoft.com/mule-user-guide/v/3.8/)
|
|
* [Mule ESB User Guide](https://docs.mulesoft.com/mule-user-guide/v/3.9/)
|
|
* Container is based from [wslph/ubuntu:xenial-latest](https://hub.docker.com/r/wslph/ubuntu)
|
|
* Container is based from [wslph/ubuntu:xenial-latest](https://hub.docker.com/r/wslph/ubuntu)
|
|
* Container is installed with the latest [Oracle JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
|
|
* Mule ESB 3.6.x containers are installed with Oracle JDK7, while Mule ESB version 3.7.x and up are installed with the Oracle JDK8.
|
|
* Mule Agent version is **1.7.0**
|
|
* Mule Agent version is updated to **1.9.3** for Mule ESB Enterprise Edition v3.6.x to 3.9.x. Mule runtime v4.0.0 have v2.0 of this agent, therefore its not updated.
|
|
|
|
* [Mule ESB Runtime v4 documentation](https://mule4-docs.mulesoft.com/)
|
|
|
|
* MMC and AMC setup are not supported for Mule ESB Community Edition.
|
|
|
|
|
|
---
|
|
---
|
|
# About
|
|
# About
|
|
Developed and maintained by [WhiteSky Labs](https://www.whiteskylabs.com), a Premier Partner of [MuleSoft®](https://www.mulesoft.com/) with the mission to be the #1 Certified Partner to deliver specialized API integration services. |
|
Developed and maintained by [Reynold Lariza](https://www.linkedin.com/in/relariza/) of [WhiteSky Labs](https://www.whiteskylabs.com), a Premier Partner of [MuleSoft®](https://www.mulesoft.com/) with the mission to be the #1 Certified Partner to deliver specialized API integration services. |
|
\ No newline at end of file |
|
\ No newline at end of file |