错误:服务“mongo”中使用了命名卷“mongodb:/data/db:rw”,但在卷部分中未找到声明

9 mongodb docker

我最近才开始学习Docker。尝试建立一个存储数据库的服务。

这是我的 docker-compose.yml:

version: "3.7"

services:
  mongo:
    image: mongo
    ports:
    - 27018:27017
    volumes:
    - mongodb:/data/db

volumes:
  mongo:
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose up .,我收到此错误:

ERROR: Named volume "mongodb:/data/db:rw" is used in service "mongo" but no declaration was found in the volumes section.
Run Code Online (Sandbox Code Playgroud)

我确实在外部创建了我的命名卷 mongodb。跑步docker volume ls会给我:

DRIVER    VOLUME NAME
local     mongodb
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?多谢。

小智 16

对于命名卷,您应该有一个与“服务”处于同一级别的“卷”键,并且您在服务中使用的任何命名卷都必须列在“卷”键(您错过的位置)下。

在你的情况下:

version: "3.7"

services:
  mongo:
    image: mongo
    ports:
    - 27018:27017
    volumes:
    - mongodb:/data/db

volumes:
  mongodb:
Run Code Online (Sandbox Code Playgroud)

只是提醒一下:不需要在此处指定匿名卷和绑定安装。

希望这对您有帮助:)