如何修复我的docker-compose.yml我得到一个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 

任何想法在我的卷声明这里有什么错?

您正在将文件挂载为目录。

简化的解决scheme是将要加载到容器中的文件的父目录安装到所需的目录中。

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

但是请注意,您正在安装到/opt ,并且您希望避免它,因此请将所有configuration文件都config到您的主机上,并将它们显式安装到目录中:

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

注意你需要将rabbitmq.config更新到definition.json新位置

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