애플리케이션을 구동하는데 필요한 모든 환경변수나 라이브러리, 프레임워크를 담아서 컨테이너화하여 보관해주는 소프트웨어 (환경문제를 해결해줌)
dockerfile이란?
docker에서 이미지를 생성하기 위한 용도로 작성하는 파일 환경변수나 어플리케이션 실행하기 위해서 꼭 필요한 실행을 위한 모든 파일, 스크립트들
(레시피)
image?
도커파일을 바탕으로 만들어지고 변경 불가능한 불변에 상태를 가짐
(게임cd)
container?
image를 구동 시켜주는 인스턴스
(게임기)
#node 기반 리눅스
FROM node:16-alpine
#"RUN, "CMD", "ENTRYPOINT" 명령 실행될 작업 디렉토리
WORKDIR /was-cch
#파일복사
COPY package.json package-lock.json ./
#package에 딱 맞는 버전만 설치
RUN npm ci
COPY . .
#컨테이너 시작 되었을 때 실행한 스크립트
ENTRYPOINT [ "node", "app.js" ]
Tip.
이미지를 만드는 시간을 단축하기 위해서는 레이어순으로 만드는게 효율적
변경 되지 않은 이미지는 그대로 두고 이미지를 뜰 수 있음.
docker file 옵션 :
FROM : 베이스 운영체제
WORKDIR : 워커디렉토리 실행할 폴더
COPY : 복사할 파일 dockerfile 기준의 파일 경로를 의미하고 우측은 복사할 경로를 의미합니다
RUN : 실행할 명령어
ENTRYPOINT : 실행할 스크립트
LABEL : 라벨 작성
ENV : 환경변수 설정
docker build [옵션] [도커파일 경로]
생성 옵션
-t : 이미지 이름 선택
-f : 도커파일 이름 선택
Docker run -d -p 8080:8080
실행 옵션
-d : 백그라운드 실행
-p : 포트 설정 (앞:로컬포트, 뒤:컨테이너포트)
image 저장소 이용