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

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

需求:在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);

显示如图


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值