如何修复docker-compose.yml我得到一个rabbitmq.config是一个目录错误?

如何修复docker-compose.yml我得到一个rabbitmq.config是一个目录错误?,docker,rabbitmq,docker-compose,Docker,Rabbitmq,Docker Compose,我的docker-compose.yml中有以下几行代码 rabbit: volumes: - ./enabled_plugins:/etc/rabbitmq/enabled_plugins - ./config/definitions.json:/opt/definitions.json:ro - ./config/rabbitmq.config:/etc/rabbitmq/rabbitmq.config:ro 但是对于rabbitmq.config,当我

我的docker-compose.yml中有以下几行代码

rabbit:
   volumes:
     - ./enabled_plugins:/etc/rabbitmq/enabled_plugins
     - ./config/definitions.json:/opt/definitions.json:ro
     - ./config/rabbitmq.config:/etc/rabbitmq/rabbitmq.config:ro
但是对于rabbitmq.config,当我启动它时

/usr/local/bin/docker-entrypoint.sh: line 386: /etc/rabbitmq/rabbitmq.config: Is a directory

知道我的卷声明有什么不对吗?

很可能当前目录中的
/config/rabbitmq.config
实际上是一个目录,而不是
docker entrypoint.sh
所期望的配置文件

您正在将文件装载为目录

简化的解决方案是将要装载的文件的父目录装载到容器中,装载到您希望它们装载到的目录中

rabbit:
   volumes:
     - .:/etc/rabbitmq
     - ./config:/opt:ro
     - ./config:/etc/rabbitmq:ro
但请注意,您正在装载到
/opt
,并且您希望避免装载,因此请将所有配置文件放入主机上的
config
,并显式装载到目录中:

rabbit:
   volumes:
     - ./config:/etc/rabbitmq
     - ./config:/opt/rabbitmq:ro

请注意,您需要将
rabbitmq.config
更新到
definition.json

的新位置,我想做的是在启动rabbitmq服务器时添加一些交换。不,不是。当我做
file./config/rabbitmq.config
时,我会得到ASCII文本。这很奇怪,我无法重现您的体验。然后,我建议您将准确的目录结构复制到另一个目录,确保
/config/rabbitmq.config
是您想要的配置文件,并且
docker compose up
相同的
docker compose.yml
进行验证。谢谢。尽管在一些代码示例中,它们明确地将文件设置为卷。无论如何,这就是问题所在。