docker실습!-nodejs연결하기

박경현·2022년 10월 6일
0

도커로 nodejs 배포를 해봤다

이번에는 순서대로 어떻게 작성 했는지 적어보려고 한다

Docker에 Node JS 배포 순서

  1. aws로 ubuntu를 설정한 EC2인스턴스 만들기
  2. Docker를 ubuntu에 설치 및 nodejs를 설치!
  3. ubuntu에 node/web 디렉토리를 만들었다!
  4. sudo chown -R ubuntu ./
    => 이렇게 해야 파일 만들 수 있는 권한이 주어진다!
  5. 이 안에 필요한 파일들 작성

파일들 설명 (.dockerignore, server.js, package.json)

.dockerignore

도커 이미지를 빌드할때 실제로 빌드 되지 않아야하는 부분을 정의해준다!

node_modules/
Dockerfile
.dockerignorefile

node.js를 사용하다보니 node_modules가 설치되는데 이거 빌드할때 같이 되면 큰일 남!! -> 메모리 심하게 낭비!

package.json

말 그래도 우리 앱에 필요한 설정들을 미리 정의하는 json 파일이다

{
    "name": "docker_web_app",
    "version": "1.0.0",
    "description": "Node js on Docker",
    "author": "First Last",
    "main": "server.js",
    "scripts": {
        "start": "node server.js" // 이 부분이 핵심!
    },
    "dependencies": {
        "express": "^4.18.1" 
    }
}

npm install 하면 이 안에 적은 의존성 라이브러리들도 자동 설치된다!

server.js파일

간단하게 express 라이브러리를 사용해서 서버 연결을 했다
제대로 연결 되었으면 res.send에 적은 내용이 15.165.236.87:8080에 보인다!
(15.165.236.87는 나의 Ec2인스턴스 퍼블릭 IP)

'use strict';

const express = require('express')

const PORT = 8080
const HOST = '0.0.0.0';

const app = express()
app.get('/',(req,res)=> {
    res.send('hello world')
})
app.listen(PORT, HOST)
console.log(`Running on http://${HOST}: ${PORT}`)

dockerfile 내용

FROM node:16
WORKDIR /home/ubuntu/node/web
COPY . .
RUN npm install
EXPOSE 8080
CMD ["node","server.js"]

WORKDIR을 기준으로 RUN, CMD, COPY, ADD, 명령은 해당 디렉토리를 기준

RUN은 실행

EXPOSE 하면 컨테이너로 들어오는 트래픽을 리스닝 하는 포트와 프로토콜을 지정하기 위해 사용 ( 도커 내 포트 번호 적는거!)

COPY 호스트 파일에 있는 디렉터리나 파일을 docker 이미지의 파일 시스템으로 복사하기 위해 사용

.dockerignore 파일은 이미지 빌드할대 제외 시킬것들

CMD는 컨테이너가 시작할때 실행할 실행 파일 또는 쉘 스크립트

docker build -t mynode .

이렇게 해서 우리가 적은 dockerfile을 mynode라는 이름의 이미지로 만든다!

docker run -d -p 80:8080 mynode

그 다음 빌드된 이미지를 컨테이너화 시킨 뒤 실행한다!!

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글