본문 바로가기
Cloud/docker

[Docker] docker로 node.js 배포개념잡기 듀토리얼

by 아크투어 2023. 4. 28.
반응형

docker nodejs 배포

 

docker nodejs 배포
docker nodejs 배포

 

1.필요한 파일

  • Dockerfile
  • package.json
  • server.js

 

2. 순서정리

  • Dockerfile 만들기  : Docker 이미지를 빌드하는 방법에 대한 지침이 포함된 텍스트 파일이다.
  • Docker 이미지 빌드: 애플리케이션을 실행하는 데 필요한 모든 종속성 및 구성이 포함된 이미지를 생성한다.
  • Docker 컨테이너 실행 : docker run명령을 사용하여 Docker 컨테이너를 실행할 수 있다.

 

3.Dockerfile

  • FROM : node18.13.0 버전을 사용
  • WORKDIR : 컨테이너의 작업 공간을 /use/src/app 을 기준으로 한다.
  • COPY : package.json 파일을 컨테이너의 ./ 경로로 복사 (package.json는 한번만 실행시키기 위해 상위에 배치)
  • RUN : 컨테이너에서 npm install 명령어를 실행
  • COPY : 전체파일을 컨테이너의 ./ 경로로 복사 
  • CMD : 구동명령
FROM node:18.13.0

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

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

 

4.package.json

script 부분 해당내용을 작성한다.

 

{
  "name": "nodejs-server",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "^4.18.2"
  },
  "author": "",
  "license": "ISC"
}

 

5. server.js

간단한 hello world 를 실행하기 위한 소스파일

const express = require("express");

const PORT = 8080;

const app = express();
app.get("/", (req, res) => {
  res.send("Hello World..");
});

app.listen(PORT);

 

6. 실행명령어

  • nodejs-server 도커 이미지를 생성
  • 8080포트로 컨테이너 실행
  • -d 옵션은 실행후 백그라운드 복귀를 위해 사용한다.
  • -p 는 노출할 포트와 실행할 이미지를 지정한다.
#nodejs-server를 빌드함
docker build -t nodejs-server:latest .

#8080포트로 nodejs-server 실행
docker run -d -p 8080:8080 nodejs-server:latest

 

7. 실행디렉토리 SH명령어로 확인

#컨테이너아이디 조회
docker ps -a

#SH모드로 진입
docker exec -it <컨테이너아이디> sh

 

만약 Dockerfile에서 WORKDIR 설정을 하지않으면 / 경로에 실행파일들이 생성된다.

동일한 파일명이 있으면 덮어쓰기 때문에 WORKDIR 경로를 설정해서 소스를 관리한다.

docker sh사용
docker sh사용

 

반응형