뉴질랜드 다이어리(NZ Diary) 라빠
Docker 따라하기 #3 본문
지금까지 Docker 기본도 익혔고, 실제 Dockerfile 도 만져봤으니 이번에는 Nginx 가 아닌, Node.js 서버를 이용한 간단한 웹앱을 만들어보겠습니다. 웹앱이라고 해봐야, 역시 Hello World 수준이지만, 이글은 Node.js 나 Express 에 대한 글이 아니므로, 이정도면 충분하다고 생각합니다.
개발환경 만들기
Docker 를 이용하는 장점은 바로 작업환경을 만들기 편하다는 점이죠. 즉, 어떤 호스트를 사용중이건 Docker 만 정상적으로 설치되어있다면 바로 개발환경이 완료된 상태로 보면 됩니다.
Docker 설치는 이전글(Docker 따라하기 #1)을 참고하세요.
Node.js 웹앱 만들기
원하는 작업 디텍토리를 만듭니다.
$ mkdir node-web-app
$ cd node-web-app
Node web app 의 package.json 파일을 아래와 같이 만들어줍니다.
{
"name": "node_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.3"
}
}
package.json 을 만드는 방법은 두가지가 있습니다.
npm init
을 이용하는 방법- 직접 파일을 만드는 방법
Express 를 이용하여 Web app 을 정의합니다.
'use strict';
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello Engineers\n');
});
app.listen(8080, '0.0.0.0');
console.log(`Node Web App is Running on http://0.0.0.0:8080`);
이렇게 하여, 'Hello Engineers' 를 리턴하는 간단한 Web App 이 만들어졌습니다.
Docker Image 만들기
Dockerfile 만들기
Nginx 를 이용한 Docker image 와 대부분 비슷한 방식으로 이루어집니다.
#node:8 을 베이스 이미지로 사용합니다.
FROM node:8
#이미지내에서의 작업 디렉토리를 설정해줍니다.
WORKDIR /usr/src/app
#package.json 파일을 내부로 복사합니다.
COPY package.json .
#웹앱의 Dependency 를 설치해줍니다.
RUN npm install
#앱의 구동파일을 복사합니다.
COPY server.js .
#앱을 구동합니다.
CMD [ "npm", "start" ]
Docker image 만들기
아래의 커맨드를 통해서 Docker image 를 만들어줍니다.
$ docker build -t <username>/node-web-app .
Web app 구동하기
Docker image 구동하기
아래의 커맨드를 통해서 Docker image 를 구동합니다.
$ docker run -d -p 30000:8080 <username>/node-web-app
정상동작 확인
브라우저에서 http//localhost:30000 으로 접속해보거나, CURL 을 이용하여 확인합니다.
$ curl -i localhost:30000
자 이제 나만의 웹앱(웹 서비스)가 만들어졌습니다. 원하시는 기능이 있으면, Express 를 이용해서 간단하게 기능을 추가하면 되겠죠??
위의 모든 진행을 한번 살펴보시죠 ^^
node image 를 받아두지 않아서, 시간이 좀 길어졌네요;;
server.js 에 오타가 하나 있었네요;; 문제를 파악하고, 해결하는 과정도 살펴보세요~^^
참고한 글들
'개발' 카테고리의 다른 글
Hexo 에 Busuanzi 카운터 연동하기 (0) | 2019.09.04 |
---|---|
Github X Hexo 로 블로그 운영하기 (0) | 2019.09.04 |
Docker 따라하기 #2 (0) | 2019.09.04 |
Docker 따라하기 #1 (0) | 2019.09.04 |
최근 수개월동안 새로 공부하고 있는 기술들... (0) | 2017.03.08 |