본문 바로가기

도커

[Docker] 정리(2) - Dockerfile

728x90

Dockerfile이란?

  • Dockerfile은 **도커 이미지(Docker Image)**를 빌드하기 위한 설정 파일입니다.
  • 이 파일에는 컨테이너를 구성하고 실행할 명령들이 순서대로 포함됩니다.
  • 결과적으로 Dockerfile을 통해 반복적이고 일관된 환경에서 애플리케이션을 실행할 수 있는 도커 이미지를 만듭니다.

 


Dockerfile의 주요 구성 요소와 역할

  1. 베이스 이미지 설정:
    1. FROM: 이미지 빌드를 시작할 기본 이미지를 지정합니다.
      FROM node
      예: node 이미지 기반으로 빌드.
  2. 작업 디렉토리 설정:
    • WORKDIR: 컨테이너 내에서 명령이 실행될 디렉토리를 지정합니다.
      WORKDIR /app
       
  3. 파일 복사:
    • COPY: 로컬 파일을 컨테이너 내부로 복사합니다.
      COPY . /app
      현재 폴더의 모든 파일을 /app 디렉토리로 복사.
  4. 종속성 설치:
    • RUN: 도커 이미지 빌드 중에 명령을 실행합니다.
       
      RUN npm install
      Node.js 애플리케이션의 종속성 설치.
  5. 포트 노출:
    • EXPOSE: 컨테이너가 외부와 통신할 포트를 설정합니다.
       
      EXPOSE 80
  6. 애플리케이션 시작 명령:
    • CMD: 컨테이너가 시작될 때 실행할 명령을 지정합니다.
       
      CMD ["node", "server.js"]
      컨테이너가 실행되면 node server.js 명령으로 서버 시작.

Dockerfile과 이미지/컨테이너의 관계

  • 도커 이미지: Dockerfile에 정의된 명령을 실행해 만들어진 템플릿입니다.
    • 여러 개의 컨테이너가 이 이미지를 기반으로 실행될 수 있습니다.
  • 컨테이너: 이미지를 기반으로 실행되는 실제 애플리케이션 인스턴스입니다.

Dockerfile 사용 흐름

  1. 이미지 빌드:
    • 현재 디렉토리에 있는 Dockerfile을 사용해 my-app 이미지를 생성합니다.
  2. docker build -t my-app .
     
  3. 컨테이너 실행:
    • 컨테이너를 실행하고, 로컬 머신의 포트 80과 컨테이너의 포트 80을 연결합니다.
  4. docker run -p 80:80 my-app

마무리

Dockerfile을 사용하면 코드와 환경을 함께 패키징해 일관성 있는 개발과 배포 환경을 구축할 수 있습니다. 이를 통해 팀 내 개발자들이 동일한 환경에서 작업하고, 운영 환경에서도 문제가 없도록 합 수 있습니다.

728x90

'도커' 카테고리의 다른 글

[Docker] 정리(3) - Managing Images & Containers  (0) 2024.10.30
[Docker] 정리(1) - 이미지 & 컨테이너  (1) 2024.09.22