Docker(2) - Node.js 웹 앱의 도커라이징

any1ok·2021년 9월 16일
0

Node.js 앱 생성

https://velog.io/@any1ok/NodeJS-Express

요놈 기반으로든 어떻게든 node 서버를 만들어보자.

일단 완성된 나의 nodejs 웹앱 디렉토리 구조이다.

server.js

const express = require('express');
const app = express()

app.get('/', (req, res) => res.send('Hello World'));

app.listen(3000, () => {
    console.log('My REST API running on port 3000!');
})

package.json

{
  "name": "docker_node_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last <any1ok@github.com>",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

일단 backend 디렉토리에서

node server.js

로 실행 확인을 해보자.

그후 Dockerfile 을 만들어준다

Dockerfile

FROM node:14

# 앱 디렉터리 생성
WORKDIR /usr/src/app

# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY backend/package*.json ./

RUN npm install
# 프로덕션을 위한 코드를 빌드하는 경우
# RUN npm ci --only=production

# 앱 소스 추가
COPY ./backend .

EXPOSE 3000
CMD [ "node", "server.js" ]

Dockerfile 에 관한건 설명을 따로 읽어보자.

올리기 싫은 파일은

.dockerignore

에 추가하자!
.gitignore 과 유사하게 사용하면된다

backend/node_modules
docker build . -t <your username>/node-web-app

그후 이미지 빌드해주고

$ docker images
REPOSITORY TAG ID CREATE
node 12 1934b0b038d1 5 days ago
/node-web-app latest d64d3505b0d2 1 minute ago

docker run -p 49160:8080 -d <your username>/node-web-app

컨테이너에 실행시켜주면~~

$ curl -i localhost:3000
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
Date: Mon, 13 Nov 2017 20:53:59 GMT
Connection: keep-alive
Hello world

잘뜬다!!!

profile
백엔드 개발자

0개의 댓글