[Docker] mongodb容器化:初始化数据并挂载到本地

本文介绍如何将一个使用Node.js和MongoDB构建的Web应用通过Docker容器化,并实现数据库的初始化和数据挂载到本地。在过程中,作者遇到数据库连接问题,由于依赖服务启动顺序和连接重试机制,导致首次连接失败。解决方案是修改源码,增加连接错误时的重试逻辑。提供了Dockerfile、setup.sh脚本、docker-compose.yaml配置文件及相关代码链接。
摘要由CSDN通过智能技术生成

去年一门课程,用nodejs+mongodb重构了一个jsp+servlet+mysql的web网站(具体参见这篇论文),但是网站是本地部署的,数据库也是本地先创建好的,想要把这个网站用docker-compose跑起来,需要写一些脚本、Dockerfile文件和对应的docker-compose文件。
(重点在于数据库的容器化,参考文章:docker-compose 构建mongodb并导入基础数据示例

  • 文件目录结构:
|- project
	|- Dockerfile
	|- ... (nodejs项目的其它所有目录和文件)
|- mongo
	|- data
		|- xxx.json (用于初始化的数据库文件)
	|- Mongo-Dockerfile
	|- setup.sh
|- data
	|- db (宿主机挂载目录)
|- docker-compose.yaml
  • 本地数据库导出:
mongoexport -d <dbname> -c <collectionname> -o <output json file path> --type json
  • 源代码数据库连接部分的修改:
var mongoose = require('mongoose'),
    DB_URL = 'mongodb://<mongoService>/<dbName>';

mongoose.Promise = global.Promise;
var reconnectTimeout = 5000; // ms.

/**
 * 连接
 */
// mongoose.connect(DB_URL, { useMongoClient: true, autoReconnect: true});
function connect() {
   
    // Catch the warning, no further treatment is required
    // because the Connection events are already doing this
    // for us.
    mongoose.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值