본문 바로가기

여러가지/Docker & AWS

[실습](4) nodemon

● 실습 환경

(OS) Rocky Linux release 8.7 (Green Obsidian)

 

Step 1. 파일 수정

(파일) Dockerfile

-------------------------------------------------------------------------------------

FROM node:latest
RUN npm install -g nodemon  # nodemon 패키지 설치
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3001
CMD ["nodemon", "server.js"]   # 글로벌 설치

-------------------------------------------------------------------------------------

(파일) package.json

-------------------------------------------------------------------------------------

{
  "name": "test",
  "version": "1.0.0",
  "description": "test",
  "main": "server.js",
  "scripts": {
    "start": "nodemon server.js",    # nodemon 사용 서버 실행 
    "test": "echo \\\"Error: no test specified\\\" && exit 1"
  },
  "author": "yjyoo",
  "license": "ISC",
  "devDependencies": {
    "nodemon": "2.0.4"   # nodemon 패키지
  }
}

-------------------------------------------------------------------------------------

(파일) server.js

-------------------------------------------------------------------------------------

const http = require('http');

const hostname = '0.0.0.0'; 
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

-------------------------------------------------------------------------------------

 

Step2. Dockerfile 빌드하여 이미지 생성

# docker build -t nodemon-test .

 

Step3. 이미지 사용하여 컨테이너 생성 및 실행

docker run -d -p 8080:3001 -v $(pwd):/app nodemon-test

※ nodemon은 바인드 마운트 필수 입니다.

 

Step4. 방화벽 포트 오픈

# firewall-cmd --permanent --add-port=8080/tcp

# firewall-cmd --reload

 

Step5. 접속

(브라우저) http://<-컨테이너 IP->:<-포트->

(로컬 시스템) # curl http://<-컨테이너 IP->:<-포트->

 

Step6. 로컬 시스템에서 server.js 파일 변경

-----------------------------------------------------------------------------------------------

res.end('Hello Normal World\n'); => res.end('Hello Nodemon World\n');

 

-----------------------------------------------------------------------------------------------

 

Step7. 변경된 사항 반영 확인

=> 변경된 사항 (Normal -> Nodemon) 정상 적용된 것 확인할 수 있습니다.