可以用docker-compose挂载我现有的Mongo数据库吗?

shyt4zoc  于 2023-01-08  发布在  Docker
关注(0)|答案(1)|浏览(195)

经过几个月的开发,我得到了一个点,它是更好地停靠我的MERN应用程序。我设法创建**.yaml文件,一切正常,但问题是,我已经收集了大量的数据。我希望能够将此数据装载到容器,但我不知道如何做到这一点。读了很多东西,但我的数据在编写完应用程序后仍然没有出现。下面是我的docker-compose.yaml**文件的外观:

version: '3.9'

services:
  #MongoDB Service
  mongo_db:
    container_name: db_container
    image: mongo:latest
    restart: always
    ports:
      - 2717:27017
    volumes: 
      - /mnt/c/temp/mongo/db:/data/db 

  #Node API Service
  api:
    build: .
    ports: 
     - 4001:4001
    environment:
      PORT: 4001
      MONGODB_URI: mongodb://db_container:27017
      DB_NAME: project-system
    depends_on:
      - mongo_db
  
volumes:
  mongo_db:

如您在此行中所见:

volumes: 
      - /mnt/c/temp/mongo/db:/data/db

我尝试从C:\驱动器指向路径,但这不起作用。我还尝试了以下位置的同一行:

volumes:
  mongo_db:

(the文件底部),但同样没有成功。基本上,我现有的数据库是在
C:\数据\数据库
我怎样才能指出这是MongoDB服务的源呢?

y53ybaqx

y53ybaqx1#

首先,您需要从本地MongoDB创建转储文件,并将这些文件复制到docker MongoDB。

mongodump --uri 'mongodb://localhost:27017/yourdatabase' --archive=<your file> --gzip
mongorestore --uri 'mongodb://remotehost:27017/yourdatabase' --archive=<your file> --gzip

您应该能够从本地主机访问Docker。
注意:如果您没有正确理解,请参考此answer
您可以对要装载的路径进行这些更改以使数据持久化。创建新文件夹C:/data/docker_mongo以使数据持久化。

version: '3.9'

services:
  #MongoDB Service
  mongo_db:
    container_name: db_container
    image: mongo:latest
    restart: always
    ports:
      - 2717:27017
    volumes: 
      - C:/data/docker_mongo:/data/db 

  #Node API Service
  api:
    build: .
    ports: 
     - 4001:4001
    environment:
      PORT: 4001
      MONGODB_URI: mongodb://db_container:27017
      DB_NAME: project-system
    depends_on:
      - mongo_db
  
volumes:
  mongo_db:

相关问题