使用RabbitMQ的搬运工图像
问题描述:
我的目标是建立与SSL支持,这是使用以下rabbitmq.config
文件,它驻留在主机的/etc/rabbitmq
路径之前实现的RabbitMQ配置在rabbitmq.config SSL。使用RabbitMQ的搬运工图像
现在我想能够配置其他rabbitmq用户和密码比默认guest
guest
。
我使用的RabbitMQ搬运工图像与以下搬运工-撰写配置:
version: '2'
services:
rabbitmq:
build: ./rabbitmq
ports:
- "8181:8181"
expose:
- "15672"
- "8181"
volumes:
- /etc/rabbitmq:/etc/rabbitmq
environment:
RABBITMQ_DEFAULT_USER: user123
RABBITMQ_DEFAULT_PASS: 1234
RabbitMQ的配置:
[{rabbit,
[
{loopback_users, []},
{heartbeat,0},
{ssl_listeners, [8181]},
{ssl_options, [{cacertfile, "/etc/rabbitmq/ca/cacert.pem"},
{certfile, "/etc/rabbitmq/server/cert.pem"},
{keyfile, "/etc/rabbitmq/server/key.pem"},
{verify,verify_none},
{fail_if_no_peer_cert,false}]}
]}
].
的RabbitMQ dockerfile:
from rabbitmq:management
#and some certificate generating logic
我注意到,一旦在添加部environment
,电流rabbitmq.config
文件可能通过docker-entrypoint.sh file重写具有自动生成的配置。
对于使用我发现环境变量的证书可以做到这一点(看here)构建配置。 但是没有找到任何引用定义与它的端口ssl_listeners
部分,下面rabbitmq.config
如看到我的问题是:我怎么可以创建精确的配置下使用ENV变量或提到怎么可以仍然以某种动态的方式(也许模板化的配置文件)定义新的用户名和密码的RabbitMQ矿rabbitmq.config
?
答
试试这个
version: '2'
services:
rabbitmq:
build: ./rabbitmq
ports:
- "8181:8181"
expose:
- "15672"
- "8181"
volumes:
- /etc/rabbitmq:/etc/rabbitmq
command: rabbitmq-server
entrypoint: ""
environment:
RABBITMQ_DEFAULT_USER: user123
RABBITMQ_DEFAULT_PASS: 1234
这将覆盖docker-entrpoint
,只是运行的RabbitMQ服务器。现在./docker-entrypoint.sh
也设置了某些环境变量。你的情况可能需要。因此,确保您拥有所需的一切
此解决方案的输出等同于根本不编写环境部分,因为docker入口点正在使用这些来添加与来宾默认用户不同的用户。 – JavaSa
然后下一个选项是复制docker-entrypoint.sh并根据您的需要对其进行自定义,然后使用docker-compose中的卷映射来共享它以在加载图像时覆盖该文件。如果你想要,你可以选择这种方法 –
如果你给环境变量,如上面提到的链接,而不是根据环境部分重新创建'rabbitmq.config'而不是覆盖入口点。 – JavaSa