Section2-2 : Dockerfile

tein·2022년 6월 27일
0

도커 & 쿠버네티스

목록 보기
3/14

강의를 듣다보면 Dockerfile이 나온다.
Dockerfile에 들어가는 내용이 뭔지 잘 몰라 같이 정리해둔다.

🎈Dockerfile

컨테이너에 올릴 이미지를 커스텀 해서 빌드하려면 Dockerfile이 필요하다.
도커에 의해 식별되는 특별한 이름이다.

Dockerfile에는 자체 이미지를 빌드할 때 실행하려는 도커에 대한 명령들이 포함된다.

일반적으로 FROM 명령어로 시작하고, 모두 대문자로 쓴다.

# 베이스 이미지
FROM node

# 작업 디렉토리 설정
WORKDIR /app

# build 명령 중간에 호스트의 파일/폴더를 이미지에 가져오는 것
# 도커에게 모든 후속 명령이 /app 내부에서 실행될 것임을 알린다.
COPY . /app

# 이미지가 올라갔을 때 실행되는 명령어
RUN npm install

# 도커 빌드 후 생성된 이미지에서 열어줄 포트
# 호스트와 컨테이너의 포트 매핑시 이용
# 컨테이너 생성 시 -p 옵션에서 EXPOSE 값을 적어야한다.
EXPOSE 80

# 컨테이너를 생성, 실행할 때 사용할 명령어
CMD ["node", "server.js"]
#     ^컨테이터 내부에 있는 node 명령을 사용하여 server.js파일을 실행하도록 지시

🎀COPY

  • 이미지로 복사되어야 할 파일들이 있는 곳.
  • COPY . . 를 쓴다면
    • 첫번째 '.' : 이 프로젝트의 모든 폴더, 하위 폴더 및 파일을 복사해야한다고 도커에게 알림.
    • 두번째 '.' : 그 파일을 저장해야하는 이미지 내부의 경로
  • COPY . . 보다는 사용자가 선택한 서브 폴더를 사용하는 것이 좋으므로 COPY . /app 라고 지정한다.
  • 이렇게 하면 Dockerfile과 동일한 폴더에 있는 모든 파일과 하위 폴더가 컨테이너 내부의 app 폴더에 복사된다.
  • 만약 이 폴더가 없으면 이미지와 컨테이너에 생성된다.

🎀WORKDIR

  • 코드가 있을 곳
  • ./는 도커 컨테이너의 현재 작업 디렉토리를 의미
  • 작업 디렉토리를 /app로 변경했기에 RUN뿐만 아니라 COPY도 이 작업 디렉토리를 기준으로 실행한다.
  • /app : 절대 경로. 이렇게 하면 파일을 복사할 위치를 명확히 알 수 있다.

🎀CMD

  • 이미지가 생성될 때 실행 X
  • 이미지를 기반으로 컨테이너가 시작될 때 실행 O
  • CMD ["node", "server.js"] : 배열을 전달. 도커에게 이미지를 기반으로 컨테이너가 생성될 때 마다 그 컨테이너 내부에 있는 node 명령을 사용하여 server.js 파일을 실행하도록 지시.
  • CMD에 특정하지 않으면 베이스 이미지가 실행되며, 그게 없는 경우 에러 발생.
profile
내 시행착오 모음집

0개의 댓글