ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커에서 node 서버 실행시키기
    카테고리 없음 2020. 1. 28. 17:40

    https://docs.docker.com/toolbox/toolbox_install_windows/

     

    Install Docker Toolbox on Windows

    Docker Toolbox provides a way to use Docker on Windows systems that do not meet minimal system requirements for the Docker Desktop for Windows app. What you get and how...

    docs.docker.com

     

    현재 DOCKER 최신버전은 WINDOW HOME 버전을 지원하지 않으므로 Docker toolbox를 설치하도록 한다.

     

     

    ※ 툴박스를 설치하면 자동으로 설치되는 것들 ※

     

    - 도커 엔진이 이미지 및 컨테이너를 생성할 수 있도록 해주는 도커 클라이언트(Docker Client)

    - 윈도우 터미널에서 사용하는 도커 엔진 명령어를 이용하게 해주는 도커 머신(Docker Machine)

    - 도커 컴포즈(Docker Compose) 기능

    - 도커 GUI 도구인 카이트메틱(Kitematic)

    - 도커 명령어 입력이 가능한 도커 빠른시작 터미널(Docker QuickStart Shell)

    - 오라클 VM VirtualBox

     

    설치후 Docker QuickStartShell 을 클릭해서 진입하도록 한다.

     

     

     

     

    - Docker 에 node 서버 동작 시키기

     

    1. 폴더를 만들고 npm init 을통해 package.json 파일을 만들어본다 .

     

    $ mkdir ./docker-node
    $ cd ./docker-node
    $ npm init
    $ npm install --save express
    

     

    // package.json
    {
      "name": "docker-node",
      "version": "1.0.0",
      "description": "docker node test",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "seo",
      "license": "MIT",
      "dependencies": {
        "express": "^4.16.3"
      }
    }
    

    2. node.js 서버 실행을 위한 index.js 파일을 만들어본다.

     

    $ vi index.js
    

     

    index.js

    const express = require('express');
    const app = express();
     
    app.get('/', (req, res) => {
      res.send('hello world');
    });
     
     //80번 포트를 사용
    app.listen(80, () => {
      console.log('test listening on port 80');
    });
    

     

    3. 모듈파일을 복사하지 않기위한 dockerignore 파일을 만든다.

    $ vi .dockerignore
    
    node_modules/
    

     

    4. Dockerfile을 만든다 .

    (직접 도커이미지를 만들고자 한다면 Dockerfile을 사용한다.)

    	
    $ vi Dockerfile
    
    FROM node:8
    COPY . .
    RUN npm install
    EXPOSE 80
    WORKDIR /
    CMD node index.js
    

    FROM node:8  // 기반으로 할 이미지를 설정

    COPY . . // 전부 복사

    RUN npm install //RUN을 이용해서 명령어를 실행한다

    EXPOSE 80 // 80번 포트를 열어 웹서버에 정상접근 하도록한다. 

    WORKDIR // 이후에 CMD 명령어가 실행될 경로를 지정

    CMD node index.js // node 명령어를 이용해 2번에서 작성한 index.js 파일을 실행시켜 서버를 구동한다.

     

    $ docker build --tag docker-node:dev .
    

    위 명령어는 특정한 tag이름으로 이미지를 build하는 명령어이다.

    docker-node 라는 이름으로 이미지를 만든다. 

    여기서 주의할 점은 . <- 온점이 들어가게 되는 데 온점대신 url 등 다양한 내용이 들어갈 수 있으나, 

    온점을 찍어서 마무리를 지어주도록한다. 

     

    $docker images
    

    해당 명령어는 현재 docker machine 위에 생성된 이미지를 확인할 수 있다.

     

     

    docker run --name docker-node-container -d -p 80:80 docker-node:dev

    docker run --name (컨테이너 이름) -d -p 80:80 (이미지 이름):(버전 정보) 

    해당 명령어를 실행하면

    -d 옵션은 데몬이다. 데이터베이스 서버나 계속해서 실행 되고 있어야하는 서비스에 주로 이용된다.

    -p 옵션을 이용해 호스트 서버의 80번 포트와 도커서버의 80번 포트를 연결한다.

     

     

    docker-machine ip
    

    를 이용해 해당 도커머신의 ip를 확인후 들어가본다.

     

     

    해당 node 서버가 잘 동작하는것을 확인 할 수 있다. 

     

     

    댓글

Designed by Tistory.