如何在Docker Compose中加载MongoDB的.bson集合?现有配置加载失败
Docker-Compose数据导入失败问题修复
核心问题
- 依赖顺序错误:原配置让MongoDB服务依赖数据导入服务,实际必须先启动MongoDB才能执行导入操作
- 主机名不匹配:mongoimport命令中
--host mongodb与服务名mongo不符,容器间无法正常通信 - 未等待服务就绪:
depends_on仅保证容器启动顺序,不确保MongoDB服务完全可用,导致导入时连接失败
修复后的docker-compose.yml
services: bot: build: . depends_on: - mongo mongoimport: image: mongo container_name: mongo_import volumes: - ./bot/database/static_collection/sample_collection.bson:/data/sample_collection.bson # 先等待MongoDB服务就绪,再执行导入操作 command: > sh -c " until mongosh --host mongo --eval 'db.adminCommand(\"ping\")'; do echo '等待MongoDB启动...' sleep 2 done mongoimport --host mongo --db aggregation --collection sample_collection --file /data/sample_collection.bson " depends_on: - mongo mongo: image: mongo container_name: mongo_db ports: - 27017:27017
验证操作
- 清理旧环境:执行
docker-compose down -v删除所有旧容器和关联数据卷 - 启动服务:运行
docker-compose up --build - 连接验证:用MongoDB Compass连接
mongodb://localhost:27017,检查是否存在aggregation数据库和sample_collection集合
内容的提问来源于stack exchange,提问作者As65
相关产品推荐
相关产品推荐

