您的位置:首页 > 运维架构 > Docker

docker部署node及mongodb,node.js读取mongodb数据以Web显示给用户

2017-06-21 15:56 836 查看
前:一路磕磕碰碰,发现原有的知识积累已不再适应日新月异的新技术。各种百度谷歌,各种请教求指点,终于完成了这个雏形。

需求:在docker上部署node及mongodb,利用node.js调取mongodb中的数据,以web的方式返回给用户。

1、docker篇

一直在centos上安装docker,无数个不明所以的无响应或错误,终于崩溃。重新安装了ubuntu,本来下载的16,但由于安装中文版出错,转而安装了14.04。

利用apt-get install docker后,docker不是最新版,重新添加docker源后,利用如下命令更新

apt-get -u -y upgrade lxc-docker

2、部署node及mongodb

参见http://www.tuicool.com/articles/uqY3M3n

docker pull mongo:latest

docker pull node:latest

在本地建立/data/nodejs及/data/mongo

docker run -v /data/mongo:/data/db -p27017:27017 -p 28017:28017 --name mongo -d mongo mongod --smallfiles

 docker run -it --name node -v/data/nodejs:/data --link mongo:mongo -w /data -p 5000:5000 node bash

安装mongoDB的管理工具robo3t,连接后随机添加部分数据。



3、编写node.js代码
var mongodb = require('mongodb')
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://mongo:27017/test';

var selectData = function(db, callback) {
//连接到表
var collection = db.collection('vip');
//查询数据
var whereStr = {"name":'node'};
collection.find(whereStr,function(error, cursor){
cursor.each(function(error,doc){
if(doc){
if (doc.addTime) {
// console.log("addTime: "+doc.addTime);
callback (doc.addTime);
}
}
});
});
}

var http = require('http');
http.createServer(function(req, res){
var html = '<html>'
+'<title>hello world</title>'
+'<body>';
res.writeHead(200,{'Content-Type' : 'text/html'});
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
selectData(db, function(result) {
// console.log(result);
html += result;
html += '</body></html>'
console.log(html);
res.write(html);
res.end();
db.close();
});
});
// res.write(html);
// res.end();
}).listen(5000);

显示如图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb docker node.js