ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • nodejs 에서 mongodb 연결하기 (with docker)
    서버 2020. 3. 28. 23:48

    본격적으로 들어가기전에 나는 도커를 아래와 같이 구성했다

    version: "3.7"     # version 정보를 작성합니다.
    
    services:           # service 목록을 정의합니다.
      node:             # service의 이름입니다.
        image: rhxorhkd/testnode:1.0  # 해당 service에서 사용할 image입니다.
        links:                  # 컨테이너 간의 연걸
          - mongodb             # mongodb와 연결 
        restart: always         # container를 실행할 때 항상 이미 수행중이라면 재시작을 수행합니다.
        container_name: "node"  # container의 name을 정의합니다.
        ports:                  # service port를 정의합니다.
          - "3000:3000"         # local:container
        depends_on:             # 실행순서를 설정한다. (mongodb시작 후 실행)
          - mongodb
      mongodb:          # service의 이름입니다.
        image: mongo    # 해당 service에서 사용할 image입니다.
        restart: always # container를 실행할 때 항상 이미 수행중이라면 재시작을 수행합니다.
        #environment:    # 환경변수를 정의합니다.
         # MONGO_INITDB_ROOT_USERNAME: root
         # MONGO_INITDB_ROOT_PASSWORD: P@ssw0rd
        volumes:        # container -> local로 mount할 수 있습니다.
          - type: bind 
            source: /Users/kotaekwang/Documents/kuzal/db # local 경로
            target: /data/db  # container 내부에서의 경로
        container_name: "mongo" # container의 name을 정의합니다.
        ports:                # service port를 정의합니다.
          - "27017:27017"     # local:container
    

     

     

    mongoose 모듈 다운 

    npm install --save mongoose

     

    nodejs 프로젝트 내에 mongoose 세팅 코드 작성

    //   ./conf/db.js
    
    const mongoose = require('mongoose');
    
    mongoose.connect('mongodb://mongo:27017/kuzal',
        {useUnifiedTopology : true, useNewUrlParser: true});
    
    const db = mongoose.connection;
    
    db.on("error", () => {
        console.log("> error occurred from the database");
    });
    db.once("open", () => {
        console.log("> successfully opened the database");
    });
    
    module.exports = mongoose;
    

    mongoose.connect 뒤 url에서 mongo는 컨테이너 이름 

     

    테스트 스키마 작성

    //  ./models/test
    
    const mongoose = require('../conf/db');
    
    const testSchema = mongoose.Schema({
        name : String
    });
    
    module.exports = mongoose.model('test', testSchema);
    

     

    라우트 작성 (나는 /test 로 요청할 경우 test 컬렉션 안에 데이터들을 전송하기로 하였다)

    // ./router/index.js
    
    router.get('/test', function(req, res) {
    
     Test.find(function(err, tests) {
    
        if(err) {
            console.log("failed to get");
        }
    
        res.json(tests);
      })
    });

     

    그리고 전 게시물에서 배운 docker-compose up -d 를 실행해준다. 

     

    url 창에 입력하면 원하는 결과값이 나오는 것을 알 수 있다.

    '서버' 카테고리의 다른 글

    docker-compose로 node, mongo 구성하기  (0) 2020.03.28
    nodejs express-generator 사용하기  (0) 2020.03.26
    docker 명령어  (0) 2020.03.26
    Docker로 nodejs 설치하기  (0) 2020.03.26
    docker 로 mongodb 설치하기  (0) 2020.03.22
Designed by Tistory.