✅ 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 공부!
✅ 그림으로 이해하기
'코딩 > Docker' 카테고리의 다른 글
🐳 웹 프론트엔드 프로젝트(HTML, CSS, Nginx)를 Docker로 배포하기 (0) | 2025.06.25 |
---|---|
🐳 웹 프론트엔드 프로젝트(Next.js)를 Docker로 배포하기 (0) | 2025.06.25 |
🐳 EXPOSE : 컨테이너 내부에서 사용 중인 포트를 문서화하기 (0) | 2025.06.25 |
🐳 실습 - Dockerfile의 WORKDIR 명령어 (0) | 2025.06.25 |
🐳 RUN: 이미지를 생성하는 과정에서 사용할 명령문 실행 (1) | 2025.06.24 |
댓글