Deploy the official MuleSoft Anypoint Flex Gateway Docker image to Heroku
- A Heroku account
- A MuleSoft Anypoint Platform account
- Heroku CLI
- Docker
Create an application on a Private Space with the Heroku CLI using the --space flag:
heroku create <gateway-app-name> --space <private space>Set the registration.yaml configuration contents in the FLEX_CONFIG environment variable:
Note
To generate the registration.yaml file you'll need to add a new gateway from the Anypoint Runtime Manager and follow the Container > Docker instructions.
heroku config:set FLEX_CONFIG="$(cat registration.yaml)" -a <gateway-app-name>Set the required configuration environment variables to make it work on Heroku:
Note
For more information about the configuration environment variables take a look at the app.json file.
heroku config:set FLEX_DYNAMIC_PORT_ENABLE=true -a <gateway-app-name>
heroku config:set FLEX_DYNAMIC_PORT_ENVAR=PORT -a <gateway-app-name>
heroku config:set FLEX_DYNAMIC_PORT_VALUE=8081 -a <gateway-app-name>
heroku config:set FLEX_CONNECTION_IDLE_TIMEOUT_SECONDS=60 -a <gateway-app-name>
heroku config:set FLEX_STREAM_IDLE_TIMEOUT_SECONDS=300 -a <gateway-app-name>
heroku config:set FLEX_METRIC_ADDR=tcp://127.0.0.1:2000 -a <gateway-app-name>
heroku config:set FLEX_SERVICE_ENVOY_DRAIN_TIME=30 -a <gateway-app-name>Deploy the Flex Gateway to Heroku by running:
heroku stack:set container
git push heroku mainAfter deploying the Flex Gateway to Heroku you'll need to add a new API to it under the Anypoint API Manager, otherwise the Flex Gateway application will restart with a message similar to the following:
"Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch"
Depending on the dyno type, to achieve better performance there is our recommended concurrency values:
| Dyno type | FLEX_SERVICE_ENVOY_CONCURRENCY |
|---|---|
| Basic/Standard-{1X,2X} | 1 |
| Performance-{S,M} | 2 |
| Private-{S,M} | 2 |
| Performance-L-RAM | 4 |
| Private-L-RAM | 4 |
| Shield-L-RAM | 4 |
| Performance-L | 8 |
| Performance-XL | 8 |
| Private-XL | 8 |
| Performance-2XL | 16 |
| Private-2XL | 16 |
| Shield-2XL | 16 |
You can set it by running:
heroku config:set FLEX_SERVICE_ENVOY_CONCURRENCY=<concurrency-value> -a <gateway-app-name>