Docker: NodeJs 및 MongoDb 서비스

안녕하세요. 이 게시물은 내 도커 기사의 연속입니다. 확인하려면 링크를 클릭하십시오.


따라하려면 도커와 노드가 설치되어 있어야 합니다.


오늘은 두 가지 서비스NodeJs app with MongoDb를 배포하는 방법을 알아보겠습니다.

소스 코드 찾기here

의제



🎯 노드 프로젝트 설정
🎯 도커 설정
🎯 폴더 구조
🎯 코드 분석




프로젝트 시작
npm init -y



종속성 설치
npm i express dotenv mongoose



패키지.json




도커 설정



노드 및 몽고 이미지를 가져오려면 도커 허브로 이동하여 공식 이미지를 가져옵니다. click
도커 데몬이 켜져 있는지 확인하십시오. 데몬을 활성화하려면 도커 데스크탑을 클릭하십시오.

컴퓨터에 도커가 설치되어 있는지 확인하려면 터미널에서 docker --version를 실행하십시오.





풀 노드 이미지






몽고 이미지를 당겨






도커 이미지 확인

docker image ls






폴더 구조

다음은 가장 기본적인 아키텍처의 폴더 구조입니다.



코드 분류




🐋 데이터베이스 설정


이 구성 폴더에서 몽구스 모듈을 가져와서 데이터베이스에 연결하고 구성을 내보냈습니다.

⚠️ 참고:
  • docker-node-mongo는 아무 이름이나 지정할 수 있습니다.
  • mongo :27017/docker-node-mongo에 주목하십시오. 이는 개발 모드에서 사용하는 localhost를 대체합니다.




  • 🐋 모델 및 스키마


    여기에서 몽구스 라이브러리를 가져오고 사용자를 위한 새 스키마를 만듭니다.




    🐋 경로


    비즈니스 로직을 작성하고 익스프레스 라우터를 내보낸 후 기본 항목 파일에 마운트합니다app.js.




    🐋 .env






    🐋 앱.js



    const express = require('express');
    const dotenv = require('dotenv');
    dotenv.config();
    const connectDb = require('./config/db');
    
    const app = express();
    
    connectDb();
    const port = process.env.NODE_LOCAL_PORT || 3020;
    
    app.use(express.json());
    app.use(express.urlencoded({ extended: true }));
    
    app.get('/', (req, res) => {
      res.send('Hello World');
    });
    
    app.use('/', require('./routes/user'));
    
    app.listen(port, () => {
      console.log(`Server is running on port ${port}`);
    });
    



    이제 다음 명령을 실행하여 앱을 로컬에서 테스트해 보겠습니다.npm start

    다음으로 Ctrl + C 를 실행하여 서버를 중지하겠습니다.




    도커 파일



    The first line is the base image that we want to use.

    The WORKDIR command is used to set the working directory for the container.

    We copy the package.json file to the current directory.
    We install our dependencies.

    The COPY command copies the contents of the current directory to the Dockerfile's context.

    The EXPOSE command is used to expose ports to the outside world.

    The CMD directive is used to specify the command that will be run when the image is run.




    ⚠️ We could actually go ahead to build this image using this Dockerfile by running the build command like docker build -t [name of container] and then run using docker run -p 8082:8082 [image name] ... but it will not connect to the mongodb service. In other to be able to run the two services we need a docker-compose.yml file






    도커 작성 파일


    마지막으로 앱 및 mongo 서비스용 docker-compose.yml을 설정합니다. 이 파일은 NodeJs 앱을 빌드하고 mongo 이미지에 연결하는 데 도움이 됩니다.


    테스트

    테스트하기 위해 다음 명령을 실행합니다.docker-compose up -d-d 플래그는 분리 모드에서 컨테이너를 실행 중임을 의미합니다.





    실행 중인 컨테이너를 확인하려면



    두 개의 컨테이너가 실행되고 있는 것을 볼 수 있습니다.

    브라우저로 이동해 보겠습니다.





    POST 경로를 테스트합니다.



    docker exec 명령을 사용하여 생성된 사용자를 확인합니다.
    실행 중인 컨테이너 확인


    몽고 컨테이너에 입력







    결론

    이 게시물이 도움이 되었기를 바랍니다. 따라하는 동안 막히면 소스 코드에 대한 위 링크를 확인하십시오.




    참조

    좋은 웹페이지 즐겨찾기