https://velog.io/@any1ok/NodeJS-Express
요놈 기반으로든 어떻게든 node 서버를 만들어보자.
일단 완성된 나의 nodejs 웹앱 디렉토리 구조이다.
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!');
})
{
"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 을 만들어준다
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 에 관한건 설명을 따로 읽어보자.
올리기 싫은 파일은
에 추가하자!
.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
잘뜬다!!!