본문 바로가기
코딩/Docker

🐳 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기

by Leedius 2025. 6. 25.

✅ 1. Nest.js 프로젝트 생성

# Nest CLI 설치
npm install -g @nestjs/cli

# 새 프로젝트 생성
nest new my-server
💡 생성 과정에서 npm 또는 yarn 중 하나를 선택해 의존석 설치가 진행됩니다.

 


✅ 2. Dockerfile 작성

📄 Dockerfile

# node 이미지를 기반으로 컨테이너를 만듭니다 (Node.js가 미리 설치된 환경)
FROM node

# 컨테이너 안에서 /app 폴더를 작업 폴더(디렉토리)로 지정합니다.
WORKDIR /app

# 현재 폴더(프로젝트 폴더) 안의 모든 파일을 컨테이너의 /app 폴더로 복사합니다.
COPY . .

# 컨테이너 안에서 npm install 명령어를 실행해서 필요한 라이브러리(패키지)들을 설치합니다.
RUN npm install

# 소스코드를 빌드합니다. (예: TypeScript를 JavaScript로 변환)
RUN npm run build

# 컨테이너 외부에서 3000번 포트로 접속할 수 있도록 개방합니다.
EXPOSE 3000

# 컨테이너가 시작될 대 node dist/main.js 명령어를 실행해서 서버를 실행합니다.
ENTRYPOINT ["node", "dist/main.js"]
⚠️ WORKDIR 를 통해 /app 디렉토리 기준으로 작업하며, npm run build 를 통해 dist 폴더를 생성합니다.

 


✅ 3. .dockerignore 작성

📄 .dockerignore

node_modules
🧹 node_modules 는 로컬의 의존성이므로 컨테이너에 복사하지 않습니다. 컨테이너 안에서 새로 설치합니다.

 


✅ 4. Docker 이미지 빌드

docker build -t my-server .
🛠️ my-server 라는 이름으로 Docker 이미지를 생성합니다.

 


✅ 5. 이미지 생성 확인

docker image ls

 

✅ 생성된 이미지 목록에서 my-server 가 잘 생성되었는지 확인합니다.

 


✅ 6. 컨테이너 실행

docker run -d -p 3000:3000 my-server
🌐 외부 포트 3000을 컨테이너의 3000 포트와 연결합니다.

 


✅ 7. 컨테이너 상태 확인

docker ps

 

✅ 컨테이너가 정상적으로 실행되고 있는지 확인합니다.

 


✅ 8. 웹 브라우저 접속

http://localhost:3000
Nest.js 프로젝트가 정상 실행되면 아래와 같은 화면이 나옵니다.

 


✅ 9. 컨테이너 및 이미지 정리

# 컨테이너 중지
docker stop [컨테이너ID]

# 컨테이너 삭제
docker rm [컨테이너ID]

# 이미지 삭제
docker image rm [이미지ID]
🧼 실습 후 리소스를 정리해두는 습관을 들이세요!

 


✅ 보너스 - Docker 최적화 팁

  • 이미지 빌드 속도와 용량을 줄이려면 COPY 와 RUN 순서를 조정하거느 멀티스테이지 빌드 사용을 고려해야 됩니다.
  • 추후에 Docker Layer와 Cache 공부!

 


✅ 그림으로 이해하기

댓글