Docker Compose的Config配置无法配合docker compose up使用的问题
RabbitMQ通过Docker Compose Config注入配置不生效问题
我使用rabbitmq:3.11.6镜像配合Docker Compose部署服务,原本运行正常,现在需要修改RabbitMQ默认配置。根据RabbitMQ官方文档,配置会从/etc/rabbitmq/conf.d目录加载。
之前我通过Dockerfile构建新镜像的方式成功让RabbitMQ加载自定义配置:
FROM rabbitmq:3.11.6 COPY --chown=rabbitmq:rabbitmq --chmod=0664 rabbitmq.conf /etc/rabbitmq/conf.d/20-consumer_timeout.conf
启动日志显示配置已被正确加载:
rabbit-1 | Config file(s): /etc/rabbitmq/conf.d/10-defaults.conf rabbit-1 | /etc/rabbitmq/conf.d/20-consumer_timeout.conf rabbit-1 | /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf
现在我希望避免构建新镜像,尝试使用Docker Compose的config配置项,但配合docker compose up执行后配置并未生效。看起来配置文件是在RabbitMQ启动后才被注入,导致未被加载,同时配置中指定的uid、gid和权限设置也被忽略。
我的环境信息:
- Windows11 + WSL2
- Docker Desktop v4.17.0
- Docker版本23.0.0,build e92dd87
- Docker Compose版本v2.15.1
我的Compose配置(无关部分已省略):
version: "3.9" configs: rabbitmq_consumer_timeout_conf: file: ./docker/rabbit/rabbitmq.conf services: manager: {...} worker: {...} rabbit: image: "rabbitmq:3.11.6" hostname: rabbit configs: - source: rabbitmq_consumer_timeout_conf target: /etc/rabbitmq/conf.d/20-consumer_timeout.conf uid: "999" gid: "999" mode: 0440
执行docker compose up后,RabbitMQ启动日志中没有列出我的自定义配置文件:
rabbit-1 | Config file(s): /etc/rabbitmq/conf.d/10-defaults.conf rabbit-1 | /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf
但进入容器查看,该文件确实存在:
- UID和GID为1000(来自WSL2主机),配置中指定的uid和gid被忽略
- 文件权限为777(来自主机系统),配置中指定的mode被忽略
我曾修改Dockerfile测试过上述权限的配置文件,RabbitMQ能正常加载,因此推测问题出在配置文件注入时机过晚。
请问Docker Compose的config机制能否配合docker compose up使用?
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

