본문 바로가기

docker

4. node.js로 도커 실행 실습

따라하며 배우는 도커와 CI환경

 

1. 동작 원리

  • 도커파일 작성
  • 빌드 -> 임시 컨테이너로 이미지 생성
  • 이미지 실행 -> 컨테이너 생성
  • 컨테이너에서 스크립트 명령어로 실행 -> node.js 소스코드 실행

2.  도커 파일

FROM node:10

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY ./ ./

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

 

  • COPY: 로컬 소스코드를 컨테이너에 복사해줌
  • COPY를 2개로 나눈 이유
    • npm install 전에 COPY ./ ./ 처럼 모든 로컬 소스코드 복사시
    • 소스코드가 변경된것이 있으면 npm install을 다시 진행하기 때문에
    • 패키지 수정이 없는 경우엔 npm install 생략하기 위함

3. 포트 맵핑

  • 도커 실행시 로컬 네트워크를 컨테이너 내부 네트워크에 연결 해줘야 한다
docker run -p <로컬 포트>:<컨테이너 포트> <이미지이름>

ex)
docker run -p 5000:8080 nathaneast/nodejs
  • ex)
    • 클라이언트 로컬 네트워크 포트 5000 실행시 (웹 브라우저 http://localhost:5000 접속)
    • 컨테이너 네트워크 포트 실행하여 동작함 (소스코드에서 포트 8080 설정)

4. 도커 볼륨

  • COPY 방식
    • 빌드시 변경된 소스코드 복사
    • 컨테이너 다시 실행해야 반영 됨
  • 도커 볼륨 방식
    • 컨테이너가 로컬 디렉토리의 파일들을 매핑하여 사용함
    • 볼륨을 이용해서 실행시 소스코드 변경 되어도 반영 됨
docker run -p <로컬 포트>:<컨테이너 포트> -v <매핑하지 않을 파일 경로> -v $(pwd):<매핑할 파일 경로> <이미지>

ex)
docker run -p 49160:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app nathaneast/nodejs

 

기타.

-d: 명령어 실행하고 나옴

 

'docker' 카테고리의 다른 글

7. docker, aws, github action 실습  (0) 2024.06.09
5. docker compose  (0) 2024.05.15
3. 도커 이미지 만들기  (0) 2024.05.01
2. 도커 클라이언트 명령어  (0) 2024.04.22
1. 도커 기본  (0) 2024.04.16