-
배포 - Dockerfile 작성하기Infra/CI-CD 2022. 12. 25. 14:23
Dockerfile 작성하기
Node.js 앱을 도커 환경에서 실행하려면 먼저 이미지를 생성하고 그 이미지를 이용해서 컨테이너를 실행한 후 그 컨테이너 안에서 Node.js앱을 실행해야 한다. 그래서 그 이미지를 작성하려면 Dockerfile을 먼저 작성해야 한다.
즉 Dockerfile은 도커 image를 만들기위한 지시서다.
Dockerfile 명령어
Dockerfile에 적힌 명령어는 도커 서버에게 무엇을 하라고 알려주는 것이다.
# 베이스 이미지를 명시해준다. FROM baseImage # 추가적으로 필요한 파일들을 다운로드 받는다. RUN command # 컨테이너 시작시 실행 될 명령어를 명시해준다. CMD ["executable"]
FROM
이미지 생성시 기반이 되는 이미지 레이어이다. <이미지 이름>:<태그> 형식으로 작성 태그를 안붙이면 자동적으로 가장 최신것으로 다운 받는다. 베이스가 되는 이미지로 host(컴퓨터)에 설치될 OS가 주로 해당한다.
ex) ubuntu:14.04
RUN
도커이미지가 생성되기 전에 수행항 쉘 명령어 이다.
WORKDIR
WORKDIR 명령어는 도커파일에서 리눅스의 명령어의 cd와 유사하게 뒤에 오는 모든 명령어(RUN, CMD, COPY,ADD)에 대한 명령을 수행항 작업 디렉토리를 설정한다. 특히 빌드될 이미지에 최상위 디폴트로 존재 하게 될 파일이나 폴더 이름과 COPY해오게 될 파일이나 폴더에 동일한 이름이 있다면, 기존에 파일에 덮어쓰게되는 문제가 생길 수 있으며, 도커파일의 작업의 결과물이 최상위 경로에 존재하게 되면 가독성 또한 좋지 않게 된다.
COPY
도커 클라이언트의 현재 디렉토리에서 파일을 추가한다. WORKDIR를 별도로 지정했다면 로컬에 있는 파일들이 도커 컨테이너로 복사될 때 WORKDIR에 지정한 디렉토리에 복사된다.
CMD
컨테이너가 시작되었을 때 실행한 실행 파일 또는 셀 스크립트 입니다. 해당 명령어는 DockerFile내 1회만 쓸 수 있다.
이미지를 실행해 컨테이너를 생성할 때 베이스 이미지(레이어)위에 쓰기 가능한 새 레이어("컨테이너 레이어")를 추가한다.
실제 작성한 Dockerfile
FROM node:10 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY .. EXPOSE 8070 CMD["node","server.js"]
npm install은 무엇인가?
- npm은 Node.js로 만들어진 모듈을 웹에서 받아서 설치하고 관리해주는 프로그램입니다.
- npm install은 package.json에 적혀있는 종속성들을 웹에서 자동으로 다운 받아서 설치해주는 명령어이다.
- 결론적으로 현재 노드 JS앱을 만들때 필요한 모듈을 다운받아서 설치하는 역할을 한다.
"node" "server"는 무엇인가?
- 노드 웹 서버를 작동시키려면 node+엔트리 파일 이름을 입력해야한다.
정리
이렇게 Dockerfile을 다 작성한후 docker build . 를 해서 dockerfile에 작성한 내용을 docker 서버에 보내줘서 이미지를 생성한다.
'Infra > CI-CD' 카테고리의 다른 글
배포 - Application소스 변경으로 다시 재build 시 효율적으로 하는 법 (0) 2022.12.25 배포 - WORKING DIRECTRORY 명시해 주기 (0) 2022.12.25 배포 - 생성한 이미지로 app 실행 시 접근이 안되는 이유(포트 맵핑) (0) 2022.12.25 배포 - Dockerfile를 이용해서 Docker image build (0) 2022.12.25 배포 - 도커를 통해 실행 시킬 간단한 Node.js 서버 만들기 (0) 2022.12.25