使用 MongoDB 的 docker-compose.yml 数据不会持久保存到主机卷

shr*_*ap7 3 volumes mongodb docker docker-compose

在我的 Mac 上安装 docker 和 MongoDB 镜像。当我使用 docker run 命令中直接指定的卷启动容器时,即使停止容器后数据也会保留。但当我通过 这样做时,同样不起作用docker-compose.yml。有人可以建议该文件有什么问题docker-compose.yml吗?

当我这样做时,数据会被持久化:

docker run --name mongodb -v /Users/shrap7/projects/mongodb/data:/data/db --rm -d mongo

但是当我尝试同样的操作时docker-compose.yml- 它不会保留数据。

version: '3.4'
services:
    mongodb:
       image: mongo:latest
       container_name: "mongodb"
       volumes:
          - /Users/shrap7/projects/mongodb/data:/data/db
       ports:
          - 27017:27017
Run Code Online (Sandbox Code Playgroud)

我尝试使用双引号,尝试相对路径,即./data:/data/db,但没有运气。谢谢。

小智 5

我使用的是 Windows,今天也遇到了同样的问题。我发现这个要点 显示了 docker-compose 的 mongodb 配置,并且它支持命名卷。我尝试使用命名卷,它对我有用。

因此,在您的情况下,您可以尝试以下配置(使用命名卷):

services:
    mongodb:
        image: mongo:latest
        container_name: "mongodb"
        volumes:
            - mongodb:/data/db
            - mongodb_config:/data/configdb
        ports:
            - 27017:27017
volumes:
    mongodb:
    mongodb_config:
Run Code Online (Sandbox Code Playgroud)