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

Docker环境下如何使用mongoimport导入多个不同的MongoDB集合

问题根因

Dockerfile 中CMD指令仅最后一条会生效,容器启动时只会执行最后一条导入earbuds集合的命令,前面两个集合的导入指令被覆盖未执行,因此仅保留最后一次导入的集合。

解决方案

步骤1:创建导入脚本

在./mongo(即mongo-seed的Dockerfile所在目录)下新建import.sh脚本,内容如下:

#!/bin/bash
# 等待MongoDB服务就绪,避免因数据库未启动导致导入失败
until mongo --host mongo_db --eval "print(\"connection success\")"
do
  sleep 2
done

# 依次导入三个集合
mongoimport --drop --host mongo_db --db aada_backend --collection users --type json --file /users.json --jsonArray
mongoimport --drop --host mongo_db --db aada_backend --collection headphones --type json --file /headphones.json --jsonArray
mongoimport --drop --host mongo_db --db aada_backend --collection earbuds --type json --file /earbuds.json --jsonArray

步骤2:修改mongo-seed的Dockerfile

调整后的Dockerfile内容如下:

FROM mongo

# 拷贝所有数据文件到容器内
COPY ./data/users.json /users.json
COPY ./data/headphones.json /headphones.json
COPY ./data/earbuds.json /earbuds.json

# 拷贝导入脚本并赋予执行权限
COPY import.sh /import.sh
RUN chmod +x /import.sh

# 容器启动时执行导入脚本
CMD ["/import.sh"]
注意事项

你当前docker-compose中配置的MONGO_INITDB_DATABASE默认库为mongo_db,但导入命令指定的库为aada_backend,如果是误写可将脚本中所有--db aada_backend替换为--db mongo_db即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03