예시를Backend
와 FrontEnd
를 나누어서 도커 이미지를 만들었다.
후에 어떠한 방식으로 도커 파일 환경을 구성하는지 나열하고,
직접 이미지를 생성하는 과정을 알아보자.
DockerFile
이란?
- Docker Image를 만들기 위한 설정 파일.
- 컨테이너가 어떻게 행동해야하는지 대한 설정을 정의함.
- Run을 통해서 패키지(종속성)을 먼저 받아와서
npm install
을 하게 된다.- 위의 종속성 먼저 다운로드하게 되면, 다시 빌드 할때 변경 점이 없게되면 생략해서 빌드 속도가 빠르다.
- 어떻게 그럴 수 있을까? 바로
Image Layer
개념이다.
베이스이미지를 알아보기 전, WorkDIR의 역할을 좀 더 알아보자.
위는 Docker Container에 있는 폴더 들이다.
- 그 중에서
WORKDIR
경로를/app
으로 해서,root
폴더로 적용되는 상황이다.COPY
로 로컬에 있는 값들을 컨테이너의root
폴더에 넣기 위해서,
./
경로를 명시하여 복사되게 했다.
이것이 WORKDIR
의 디렉토리 현황이며,
사용 이유는 도커 컨테이너 파일과 겹치지 않게 하기 위해서다.
이미지에는 여러 레이어로 구성되어있다. (코드 줄 마다 할당 레이어가 존재함.)
그 중에서 베이스이미지란?
이렇게 도커 파일은 완성되었고,
어떻게 실행해서 이미지를 만드는지 확인해보자.
Docker
서버 전달Image
생성우리는
Node
기반의alpine
버전 베이스 이미지를 생성한다.
그 후, 임시 컨테이너를 만들어서 하드 디스크에 스냅샷을 저장한다.
이렇게 만들어진 임시 컨테이너에 시작 명령어를 지정한다.
우리 같은 경우는 npm run start
를 지정을 했다.
CMD ["npm", "run", "start"]
이 실행문이 컨테이너가
만들어지게 되면, 실행되는 명령어다.
그렇게 하나의 이미지가 만들어지는 과정이다.
이렇게 만들어진 이미지를 사용하기 위해서는 build
을 사용해야 한다.
docker build <현재 Dockerfile이 있는 위치>
docker build -t <도커아이디/프로젝트이름>:<버전> <Docker파일 위치>
위를 참고하여, 내가 만든 이미지를 기억하기 쉬운 이름을 주었다.
docker build -t alstjrchl97/docker-backend .
최종적으로
Dockerfile
+ 각종 데이터스냅샷 = 이미지
임을, 알 수 있는 그림이다.
이렇게 나만의 backend
도커 이미지 파일이 만들어졌다.
개발환경이 다른 frontend
도커 이미지를 만들어야 하며
두 이미지로 만든 도커 컨테이너를 연결과 동시,
같이 실행 할 수 있는 방법을 다음 포스트로 소개하려 한다.