我正在开发一个使用IBM MQ的Spring Boot应用程序。我希望所有这些都在docker组合中配置。但问题是,在应用程序中有使用自定义队列是从浏览器中的UI创建的,例如application.yml
文件:
...
ibm:
mq:
queues:
first: QUEUE1
second: QUEUE2
当我想从docker撰写文件运行时,我如何在启动时创建这些队列?当我手动运行ibm mq时,我使用这样的命令:
docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --publish 1414:1414 --publish 9443:9443 --detach ibmcom/mq:latest
现在我几乎在做同样的事情但是在docker-compose.yml
文件中:
...
ibm-mq:
image: 'ibmcom/mq:latest'
container_name: ibm-mq
ports:
- "1414:1414"
- "9443:9443"
environment:
- LICENSE = accept
- MQ_QMGR_NAME = QM1
是否有任何环境变量来创建自定义队列,或者我如何做到这一点?我没有找到任何解决办法。
基于以下信息:自定义队列管理器配置,您可以创建一个名为20-config.mqsc
的MQSC文件,其中包含一些配置选项,这些选项将在创建队列管理器时运行。只需将其放入映像上的/etc/mqm目录。
20-config.mqsc
文件:
DEFINE QLOCAL(QUEUE1) REPLACE
DEFINE QLOCAL(QUEUE2) REPLACE
映射到你的docker-compose。作为卷的Yml:
ibmmq:
image: ibmcom/mq
ports:
- "1414:1414"
- "9443:9443"
environment:
- LICENSE=accept
- MQ_QMGR_NAME=QM1
volumes:
- <your 20-config.mqsc file path>:/etc/mqm/20-config.mqsc
It works for me
章节自定义队列管理器配置描述了以下选项:
您可以通过以下几种方式自定义配置:
- 对于入门,您可以使用默认的开发人员配置,该配置可用于面向开发人员的MQ高级映像
- 通过创建您自己的映像并将您自己的MQSC文件添加到映像上的/etc/mqm目录。该文件将在创建队列管理器时运行。
- 通过MQ命令服务器、MQ HTTP api或使用MQ web控制台或MQ Explorer等工具使用远程MQ管理。
version: '3'
services:
mq:
image: icr.io/ibm-messaging/mq:latest
ports:
- "1414:1414"
- "9443:9443"
environment:
- LICENSE=accept
- MQ_QMGR_NAME=QM1
- MQ_APP_PASSWORD=passw0rd
- MQ_ADMIN_PASSWORD=passw0rd
volumes:
- ./mqdata:/mnt/mqm