去年一门课程,用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.