如何在docker-compose文件中为mongodb附加持久卷?

问题描述

我有一个docker-compose文件,它将在同一网络“ mynet”中启动mongo和mongo-express容器。 我通过以下方式创建了网络:

docker network create mynet

我已经通过docker命令从外部创建了一个名为“ demo-vol”的卷。

docker volume create demo-vol

在容器内,我创建了一个示例mongo集合。 当我做 docker-compose up 时,我能够看到容器正在运行,但是我无法在该指定卷中找到mongo数据。

下面是我的docker-compose.yaml文件

version: '3'
services:
  mongo:
    image: mongo
    container_name: mymongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - "/demo-vol:/data/db"
    networks:
      - mynet
    ports:
      - 27017:27017
  mongoexpress:
    image: mongo-express
    container_name: mymongoexpress
    ports:
      - 8081:8081
    volumes:
      - "/demo-vol:/data/db"
    environment:
      ME_CONfig_MONGODB_ADMINUSERNAME: root
      ME_CONfig_MONGODB_ADMINPASSWORD: example
    depends_on:
      - mongo
    networks:
      - mynet
volumes:
  demo-vol:
    external: true
networks:
  mynet:
    external: true

我需要的是 即使删除容器后,我也希望数据保持不变。

该怎么做,请解释。我要去哪里错了?

注意:我是Docker概念的初学者。

谢谢。

解决方法

您可以使用本地驱动程序进行音量

volumes:
  demo-vol:
    driver: local

并尝试删除斜杠

volumes:
  - demo-vol:/data/db