如何自定义ibmcom/mq Docker镜像的通道名称
ibmcom/mq:latest 自定义服务器连接通道配置方法
直接运行ibmcom/mq:latest镜像时,默认会创建名为QM1的队列管理器、名为DEV.ADMIN.SVRCONN的服务器连接通道,自定义通道不需要修改镜像内部逻辑,根据配置复杂度选以下两种方式即可:
方式一:通过内置环境变量快速修改默认通道
如果只需要替换默认通道名称、保留镜像默认的开发模式权限配置,直接在启动容器时传入MQ_DEV_CHANNEL环境变量即可,不需要额外写配置脚本。
示例启动命令:
docker run \ --name mq-server \ -e LICENSE=accept \ -e MQ_QMGR_NAME=QM1 \ -e MQ_DEV_CHANNEL=CUSTOM.SVRCONN \ -p 1414:1414 \ -d ibmcom/mq:latest
容器启动完成后,会自动生成名为CUSTOM.SVRCONN的服务器连接通道,不会再创建默认的DEV.ADMIN.SVRCONN。
方式二:挂载MQSC脚本实现多通道/复杂规则配置
如果需要创建多个自定义通道、配置通道认证规则、绑定队列权限、设置通道参数,可将自定义MQSC配置脚本挂载到容器的/etc/mqm/目录,镜像启动流程中,队列管理器初始化完成后会自动执行该目录下所有后缀为.mqsc的脚本。
操作步骤:
- 本地创建自定义配置文件,例如命名为
custom.mqsc,参考配置内容如下:
* 定义业务使用的服务器连接通道 DEFINE CHANNEL(APP.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('app') MAXINST(100) REPLACE * 定义管理使用的服务器连接通道 DEFINE CHANNEL(ADMIN.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm') REPLACE * 配置通道连接规则,示例为放行所有IP的业务通道连接 SET CHLAUTH(APP.SVRCONN) TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(CHANNEL) * 配置队列权限,示例为给业务用户开放业务队列的读写权限 DEFINE QLOCAL(ORDER.QUEUE) REPLACE SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('app') AUTHADD(CONNECT,INQ) SET AUTHREC PROFILE(ORDER.QUEUE) OBJTYPE(QUEUE) PRINCIPAL('app') AUTHADD(PUT,GET,BROWSE,INQ)
- 启动容器时挂载配置文件,建议同时关闭默认开发配置,避免生成多余的默认通道和宽松权限规则:
docker run \ --name mq-server \ -e LICENSE=accept \ -e MQ_QMGR_NAME=QM1 \ -e MQ_DEV=false \ -v /your/local/path/custom.mqsc:/etc/mqm/custom.mqsc \ -p 1414:1414 \ -d ibmcom/mq:latest
验证配置是否生效
容器启动10秒左右(等待队列管理器完全启动),可执行以下命令进入容器查看通道列表:
docker exec -it mq-server runmqsc QM1 # 进入mqsc交互模式后输入以下命令查看所有通道 DISPLAY CHANNEL(*)
如果脚本执行有语法错误,可通过docker logs mq-server查看启动日志定位问题。
内容的提问来源于stack exchange,提问作者Ramsey
相关产品推荐
相关产品推荐

