728x90



NOSQL 설치하기

$ docker search mongo       => 설치하고자 하는 이미지 검색

$ docker pull mongo         => 이미지 가져오기(도커서버)

$ docker images             => 가져온 이미지 보기

 

컨테이너 생성  구동 (최초1 )

$ docker run --name mg01 -d -p 37017:27017 mongo

 

클라이언트 프로그램 설치

https://nosqlbooster.com/



==== 첫번째 docker 터미널 geth 구동 =======================================

$ docker start eth03

 

eth03컨테이너 내부로 진입

$ docker exec -it eth03 bash

 

cd eth_node1

 

geth --nousb --nodiscover --identity "eth_node1" --datadir $PWD --http --http.addr "0.0.0.0" --http.port 8545 --http.corsdomain "*" --http.vhosts '*' --networkid 1234 --http.api "admin,eth,net,web3,debug,miner,txpool,personal" --ws --ws.addr "0.0.0.0" --ws.port 8546 --allow-insecure-unlock --mine --miner.threads 1 --unlock 0 console

 

    > miner.stop()  //채굴중지



=== 두번째 docker 터미널===============================

$ docker start nd03           => nodejs 컨테이너 구동

$ docker exec -it nd03 bash   => nd03 컨테이너로 진입

 

cd node01

nodemon --legacy-watch ./bin/www      => bin폴더의 www를 실행시킴

 

    크롬에서 확인 http://192.168.99.100:32302/

 

 

=======================================================

//파일명 : routes/mongo01.js

var express = require('express');

var router = express.Router();

 

// npm install mongodb --save --no-bin-links

var MongoClient = require('mongodb').MongoClient

console.log('mongo01 start'); //확인용



//geth에 접속하여 block 을 nosql에 추가하기

var Web3 = require('web3');  

var url = "ws://192.168.99.100:38546"//geth 연결 주소

// /eth_node1 도커에서의 0.0.0.0:30303->30303/tcp, 0.0.0.0:38545->8545/tcp, 0.0.0.0:38546->8546/tcp   eth03

var ws3 = new Web3(new Web3.providers.WebsocketProvider(url));

 

// 새로운 블록생성될때마다 받아와서

ws3.eth.subscribe('newBlockHeaders', (errret=>

  if(!err){

    console.log(ret);

 

//$ docker ps -a 응답메시지에서 확인 

// d6476fa6b1cd       mongo     0.0.0.0:37017->27017/tcp         mg01

    MongoClient.connect('mongodb://192.168.99.100:37017/db01', (errdbconn=> {

      if(!err){

        var collection = dbconn.db("db01").collection("block01")

        collection.insertOne(ret).then((result=> {

          console.log(result)

          res.redirect('/mongo/insert')

        })

      }

      else{

        console.log('err'err); //디버그 용

      }

      dbconn.close()

    })

  }

});




//192.168.99.100:32302/mongo/insert

router.get('/insert'function(reqresnext) {

  res.render('mongo_insert', {title'NOSQL_INSERT'});

});

 

router.post('/insert'function(reqresnext) {

  var arr = {

    "userid":req.body.userid,

    "userpw":req.body.userpw,

    "username":req.body.username,

    "userphone":req.body.userphone,

    "useremail":req.body.useremail

  }

 

  //console.log(arr)

  MongoClient.connect('mongodb://192.168.99.100:37017/db01', (errdbconn=> {

    if(!err){

      var collection = dbconn.db("db01").collection("col01")

      collection.insertOne(arr).then((result=> {

        console.log(result)

        res.redirect('/mongo/insert')

      })

    }

    else{

      console.log(err); //디버그 용

    }

    dbconn.close()

  })

 

});



module.exports = router;

====

// 파일명 : views/mongo_insert.ejs

<!DOCTYPE html>

<html>

  <head>

    <title><%= title %></title>

    <link rel='stylesheet' href='/stylesheets/style.css' />

  </head>

  <body>

    <form action="/mongo/insert" method="post"> 

        아이디 : <input type="text" name="userid" /><br />

        암호 : <input type="password" name="userpw" /><br />

            이름 : <input type="text" name="username" /><br />

            연락처 : <input type="text" name="userphone" /><br />

            이메일 : <input type="text" name="useremail" /><br />

        <input type="submit"  value="회원가입" />

    </form>

  </body>  

</html>

 

 

 

 

=================app.js=========================

var createError = require('http-errors');

var express = require('express');

var path = require('path');

var cookieParser = require('cookie-parser');

var session = require('express-session');

var logger = require('morgan');

// npm install cors를 설치한 라이브러리 소스코드에 적용

var cors = require('cors')();



//var chatRouter = require('./routes/chat');  

var indexRouter = require('./routes/index');

var usersRouter = require('./routes/users');

var memberRouter = require('./routes/member');

var dapp01Router = require('./routes/dapp01');

var dapp02Router = require('./routes/dapp02');

var mongo01Router = require('./routes/mongo01')



var app = express();

 

// view engine setup

app.set('views', path.join(__dirname'views'));

app.set('view engine''ejs');

 

app.use(logger('dev'));

app.use(express.json());

app.use(express.urlencoded({ extendedfalse }));

app.use(cookieParser());

app.use(express.static(path.join(__dirname'public')));

 

app.use(session({

  secret'1234@',

  resavefalse,

  saveUninitializedtrue

}));

app.use(cors); //cors라이브러리 사용설정




//////////////////////////////

 

//index.js

//192.168.99.100:32302/

app.use('/'indexRouter);        

 

//users.js

//192.168.99.100:32302/users/

app.use('/users'usersRouter);   

 

//member.js

//192.168.99.100:32302/member/

app.use('/member'memberRouter); 

 

//dapp.js

//192.168.99.100:32302/dapp/

app.use('/dapp'dapp01Router);

 

app.use('/mongo'mongo01Router);

 

// catch 404 and forward to error handler

app.use(function(reqresnext) {

  next(createError(404));

});

 

// error handler

app.use(function(errreqresnext) {

  // set locals, only providing error in development

  res.locals.message = err.message;

  res.locals.error = req.app.get('env') === 'development' ? err : {};

 

  // render the error page

  res.status(err.status || 500);

  res.render('error');

});

 

module.exports = app;

 

 

 

 

 

 

 

 

--추후 수정 again

+ Recent posts