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

标签 mongodb docker docker-compose volumes

在我的 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

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

最佳答案

我使用的是 Windows,今天遇到了同样的问题。我找到了这个 gist这显示了 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:

关于mongodb - MongoDB 的 docker-compose.yml 数据不会持久保存到主机卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870416/

相关文章:

node.js - 使 MongoDB 中的表字段可文本搜索

docker - Spring Boot 容器无法连接到 Kafka 容器

docker - 微服务架构数据库备份与恢复

docker - 错误 : It was not possible to find any installed . NET Core SDK

javascript - Mongoose,将 `.aggregate()` 应用于子文档数组,并以最少的查询次数获得文档其他字段的结果

javascript - 为什么 Collection.find() 在我的 Meteor 客户端上不起作用?

node.js - 有什么方法可以存储nodejs应用程序所做的所有交易吗?

docker - SSH隧道到远程docker服务

PHP CLI - 错误 : could not find an available, 在分配给网络的默认值中不重叠的 IPv4 地址池

Docker-Compose 在数据库创建时卡住