Node 레시피 만들어서 실행 연습 해보기

알파로그·2023년 4월 25일
0

Linux 와 Docker

목록 보기
17/28

🔗 레시피 만들고 실행하는 방법

✏️ 소스 파일 생성

📍 디렉토리, 파일 생성

mkdir -p /docker_projects/node_hello_1/project

cd /docker_projects/node_hello_1/project

vim index.js

  • 노드 코드 입력
const express = require("express");

const port = "8080";

const app = express();

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

app.listen(port);
console.log(`server running on ${port}`);

  • 의존성 파일 생성
    • Spring boot 의 build.gradle 같은 역할을 하는 파일
vim package.json

  • json 소스 입력
{
  "dependencies": {
    "express": "^4.18.2"
  }
}

✏️ Docker file 생성

📍 레시피 생성

  • 레시피 파일 생성
vim Dockerfile

  • 레시피 입력
# 최신 node 이미지로 부터 시작
FROM node

# Working Directory 지정
# 도커 컨테이너의 작업폴더를 지정
WORKDIR /usr/src/app

# COPY package.json ./
# 앞의 ./는 HOST OS의 현재 폴더를 의미
# 뒤의 ./는 컨테이너의 현재 폴더(WORKDIR)를 의미
# 즉 외부에서 만들어둔 package.json 파일을 컨테이너 내부로 복사하겠다는 의미
COPY ./ ./

# node의 종속성 다운로드
# RUN 명령어는 컨테이너에서 실행
RUN npm install

# 안해도 되지만, 하는게 좋습니다.
# 이 컨테이너는 8080 포트를 사용한다는 의미 입니다.
# 일종의 광고
EXPOSE 8080

# docker run 명령에서 실행항 명령이, 이 명령어 부터는 제작타임이 아닌 런타임에서 실행됨
CMD ["node", "index.js"]

✏️ 도커 이미지 생성

  • 레시피 기반 이미지 생성
docker build -t node_hello_1 .

  • 생성된 이미지 확인
docker images

✏️ 이미지 실행

docker run \
    --name=node_1 \
    -p 8080:8080 \
    --rm \
    -d \
    node_hello_1

  • 포트를 80 이 아닌 8080 으로 설정했기 때문에 브라우저로 확인할 땐 뒤에 8080 포트를 명시해주어야 한다. 🔗 DNS 서버 수정하기

profile
잘못된 내용 PR 환영

0개의 댓글