This repo is used to build an IBM MQ container image suitable for the FWaaS project, or any other project that uses Quarkus and wants to connect to IBM MQ. It's a fork of the IBM MQ container repo and includes all the changes described at the Developing JMS apps with Quarkus and GraalVM INCLUDING a fix to a bug that took me days to debug.
Why do we need this image? If you use the stock IBM MQ Java jars, you can't create a native executable as the classes use reflection and instrospection not supported bny quarkus or any of its extensions. This image provides an AMQP channel that can be used from a Quarkus native app. The really nice aspect is that on the Quarkus app we can use JMS, so for example you can use the Apache Camel JMS producer/consumer directly, as it uses the javax.jms.ConnectionFactory created by the Quarkus Qpid JMS- AMQP extension
This is a fork of the main IBM MQ container used to create a docker image that includes the configuration needed to include the AMQP channel, as described in https://developer.ibm.com/components/ibm-mq/tutorials/mq-running-ibm-mq-apps-on-quarkus-and-graalvm-using-qpid-amqp-jms-classes/
From that page: "IBM MQ provides support for AMQP APIs through an AMQP channel that accepts connections from AMQP client applications. Using IBM MQ, Apache Qpid JMS applications can do publish/subscribe messaging and point-to-point messaging. Messaging is not just confined to AMQP client applications, as intercommunication with client applications based on other IBM MQ API stacks is possible."
We're using this image to connect from a Quarkus qpid/JMS app
The main modifications are on files:
- install-mq.sh
- incubating/mqadvanced-server-dev/10-dev.mqsc.tpl
Config: See the original readme below
9.2.3.0 (2021-07-22) Updated to MQ version 9.2.3.0
MQ_VERSION=9.2.3.0 make build-devserverThis will show the full image tag at the end of the log:
Successfully built 43124b5dbef8
Successfully tagged ibm-mqadvanced-server-dev:9.2.3.0-amd64
You can then tag & push the new version like:
docker tag ibm-mqadvanced-server-dev:9.2.3.0-amd64 849905330246.dkr.ecr.us-west-2.amazonaws.com/fwaas/ibm-mqadvanced-server-dev-amqp:9.2.3.0-amd64_fwaas_5
docker push 849905330246.dkr.ecr.us-west-2.amazonaws.com/fwaas/ibm-mqadvanced-server-dev-amqp:9.2.3.0-amd64_fwaas_5Note: The master branch may be in an unstable or even broken state during development.
To get a stable version, please use the correct branch for your MQ version, instead of the master branch.
Run IBM® MQ in a container.
You can build an image containing either IBM MQ Advanced, or IBM MQ Advanced for Developers. The developer image includes a default developer configuration, to make it easier to get started. There is also an incubating folder for additional images for other MQ components, which you might find useful.
After extracting the code from this repository, you can follow the build documentation to build an image.
See the usage documentation for details on how to run a container.
Note that in order to use the image, it is necessary to accept the terms of the IBM MQ license.
- LICENSE - Set this to
acceptto agree to the MQ Advanced for Developers license. If you wish to see the license you can set this toview. - LANG - Set this to the language you would like the license to be printed in.
- MQ_QMGR_NAME - Set this to the name you want your Queue Manager to be created with.
- LOG_FORMAT - Set this to change the format of the logs which are printed on the container's stdout. Set to "json" to use JSON format (JSON object per line); set to "basic" to use a simple human-readable format. Defaults to "basic".
- MQ_ENABLE_METRICS - Set this to
trueto generate Prometheus metrics for your Queue Manager.
See the default developer configuration docs for the extra environment variables supported by the MQ Advanced for Developers image.
If you want to use IBM MQ in Kubernetes, you can find an example Helm chart here: IBM charts. This can be used to run the container on a cluster, such as IBM Cloud Private or the IBM Cloud Kubernetes Service.
For issues relating specifically to the container image or Helm chart, please use the GitHub issue tracker. If you do submit a Pull Request related to this Docker image, please indicate in the Pull Request that you accept and agree to be bound by the terms of the IBM Contributor License Agreement.
The Dockerfiles and associated code and scripts are licensed under the Apache License 2.0. Licenses for the products installed within the images are as follows:
- IBM MQ Advanced for Developers (International License Agreement for Non-Warranted Programs). This license may be viewed from an image using the
LICENSE=viewenvironment variable as described above or by following the link above. - IBM MQ Advanced (International Program License Agreement). This license may be viewed from an image using the
LICENSE=viewenvironment variable as described above or by following the link above.
Note: The IBM MQ Advanced for Developers license does not permit further distribution and the terms restrict usage to a developer machine.
© Copyright IBM Corporation 2015, 2021