You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Meteor应用改用Docker部署后MongoDB原有数据消失该如何解决?

问题根因

你本地直接执行meteor run启动应用时,默认使用Meteor内置的本地Mongo实例,数据存储在项目目录的.meteor/local/db路径下。而你当前docker-compose配置启动的是独立的Mongo容器,使用Docker创建的全新命名卷存储数据,两个Mongo实例完全独立,因此Docker环境下访问的是空库。

解决方法
  • 方案一:导出本地旧数据导入Docker Mongo实例

    1. 保留本地meteor run启动的应用进程,在终端执行命令导出旧数据:
    mongodump -h 127.0.0.1:3001 -d meteor -o ./meteor-dump
    

    Meteor本地Mongo默认端口为3001,默认数据库名为meteor,导出的数据会存储在当前目录的meteor-dump文件夹中。
    2. 执行docker-compose up -d确保Docker Mongo容器正常运行,执行以下命令将导出的数据导入Docker Mongo:

    # 先查询Mongo容器ID
    docker ps | grep mongo
    # 将导出的dump文件拷贝到容器内
    docker cp ./meteor-dump/meteor <替换为你的Mongo容器ID>:/tmp/
    # 进入容器执行数据导入
    docker exec -it <替换为你的Mongo容器ID> mongorestore -d meteor /tmp/meteor
    

    导入完成后重启Meteor服务即可看到旧数据。

  • 方案二:直接挂载本地旧数据目录到Docker Mongo
    如果你希望Docker Mongo直接使用本地的旧数据文件,可以修改docker-compose.yml中mongo服务的volumes配置:

    mongo:
      image: mongo:latest
      ports:
        - '27017:27017'
      command:
        - --storageEngine=wiredTiger
      volumes:
        - 替换为你的本地项目全路径/.meteor/local/db:/data/db
    

    注意修改前需要先备份本地数据,且确保本地Mongo版本和Docker使用的Mongo版本兼容,避免启动报错。

其他配置优化

你当前配置中aldoa服务的volumes路径写法不规范,./opt/app:/./js/app中冒号后的容器内路径/./js/app可以简化为/js/app,避免路径识别异常。

内容的提问来源于stack exchange,提问作者Jake Wright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:36:03