여러가지/Docker & AWS

[실습](5) node 구축 - nodemon & 환경 변수

15June 2024. 6. 5. 10:00

● 실습 환경

(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

ENV PORT=3001    #  환경 변수

EXPOSE $PORT

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 패키지
  }
}

-------------------------------------------------------- package-lock.json ------------------------------------------------------

{
  "name": "test",
  "version": "1.0.0",
  "lockfileVersion": 1
}

------------------------------------------------------------ server.js ----------------------------------------------------------------

const http = require('http');

const hostname = '0.0.0.0';
const port = process.env.PORT || 3001;    # 환경 변수

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

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

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

 

Step 2. Dockerfile 빌드하여 이미지 생성

# docker build -t nodemon .

 

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

# docker run -d --name nodemon_container -p 8080:3001 -v $(pwd):/app nodemon:latest

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

 

Step4. 방화벽 포트 오픈

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

# firewall-cmd --reload

 

Step5. 외부 접속

Step6. 테스트

 

[참고] https://uyijune15.tistory.com/205

 

[정리] nodemon

Step 1. 파일 생성(파일) Dockerfile-------------------------------------------------------------------------------------FROM node:latestRUN npm install -g nodemon  # nodemon 패키지 설치 WORKDIR /appCOPY package.json /appRUN npm installCOP

uyijune15.tistory.com

 

(+) 네트워크 및 ip 설정 컨테이너 빌드

# docker run -d --name nodemon_container -p 8080:3001 --net container_network

--ip 192.168.112.9 -v $(pwd):/app nodemon:latest

 

# curl http://192.168.112.9:3001

 

단, 컨테이너 IP로는 DB, SSH, 브라우저 모두 직접 접속 안한다.

설정한 포트 &로컬 시스템을 통해 포트포워딩 하여 접속한다.