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 |