리액트 Dockerfile에 대해서 설명

문철환·2024년 4월 1일
post-thumbnail

도커파일을 작성하는데, 각 해당 소스코드의 의미를 이해하고 싶었습니다.

먼저 소스코드를 보여드리자면,

FROM node:20.11 AS build

RUN mkdir /app

WORKDIR /app

COPY package.json /app/

RUN npm install

COPY . /app/

RUN npm run build

EXPOSE 3000

CMD ["npm", "start"]

입니다.

  • FROM node:20.11 AS build
    • Node.js 20.11 버전을 기반으로 하는 Docker 이미지를 빌드 단계의 베이스 이미지로 사용
    • Node.js를 설치하고 애플리케이션을 빌드하기 위한 환경을 제공
    • AS build는 이 단계를 "build" 단계로 명명하는 것
  • RUN mkdir /app
    • 컨테이너 내부에 "/app" 디렉토리를 생성
    • app 디렉토리는 애플리케이션 소스 코드 및 의존성을 저장할 곳
  • WORKDIR /app
    • app 디렉토리를 작업 디렉토리로 설정
  • COPY package.json /app/
    • 호스트의 "package.json" 파일을 컨테이너의 "/app/" 디렉토리로 복사
    • npm install을 실행하기 전에 package.json 파일을 이미지에 복사하여 종속 항목을 설치할 준비
  • RUN npm install
    • package.json 파일에 명시된 종속 항목을 설치
  • COPY . /app/
    • 현재 디렉토리의 모든 파일을 컨테이너의 "/app/" 디렉토리로 복사
    • 소스 코드 및 기타 모든 파일을 이미지에 추가하는 단계
  • RUN npm run build
    • 해당 npm 스크립트에 정의된 대로, package.json 파일 내의 "scripts" 섹션에서 정의된 "build" 스크립트를 실행
  • EXPOSE 3000
    • 컨테이너 내부의 3000번 포트를 외부에 노출
    • 애플리케이션이 컨테이너 내에서 실행 중인 경우 외부에서 액세스할 수 있도록 함
  • CMD ["npm", "start"]
    • 컨테이너가 시작될 때 실행되는 명령어
    • 애플리케이션을 시작함
profile
밝고 빛나게

0개의 댓글