# 프로젝트 구성 예제$ npx create-react-app test-react-app --template typescript
3. 패키지 매니저 yarn을 통해 초기 패키지를 설치합니다.
$ yarn
2) Dockerfile + React App 사용예시 : 구성하기
1. 패키지 구조
💡 패키지 구조
- 이전 단계에서 생성된 프로젝트 경로의 루트 경로에 Dockerfile을 추가합니다.
2. Dockerfile 구성
💡 Dockerfile 구성
- 해당 Dockerfile은 Node.js 기반의 애플리케이션을 실행하기 위한 설정으로 구성되어 있습니다.
FROM node:18-alpine
WORKDIR /src
COPY package.json .
RUN yarn
# or
# RUN npm install
COPY . .
EXPOSE 3000CMD [ "yarn", "start" ]
# or
# CMD [ "npm", "start" ]
Dockerfile 명령어
설명
FROM node:18-alpine
Node.js 버전 18이 설치된 alpine Linux를 기반 이미지로 사용
WORKDIR /src
Docker 컨테이너 내에서 작업할 디렉토리를 src/로 설정
COPY package.json yarn.lock .
호스트 컴퓨터의 package.json와 yarn.lock 파일을 작업 디렉토리에 복사
RUN yarn
yarn 명령을 실행하여 필요한 패키지들을 설치 (npm을 사용할 경우 RUN npm install)
COPY . .
호스트 컴퓨터의 모든 파일을 작업 디렉토리에 복사
EXPOSE 3000
컨테이너의 3000번 포트를 외부에 노출. 애플리케이션이 해당 포트에서 실행될 것임을 나타냄
CMD [ "yarn", "start" ]
컨테이너가 실행되면 yarn start 명령을 실행 (npm을 사용할 경우 CMD [ "npm", "start" ])
[ 더 알아보기 ] 💡 node:<version>-alpine과 node:<version>-slim 버전은 뭘까?
1. node:<version>-alpine - Alpine Linux라는 경량화된 리눅스 배포판을 기반으로 만들어진 Node.js 이미지입니다. - 이 이미지는 크기가 매우 작아서, 컨테이너를 빠르게 실행하거나 네트워크를 통해 효율적으로 전송할 수 있습니다.
2. node:<version>-slim - Debian linux의 'slim' 버전을 기반으로 한 Node.js 이미지입니다. - 이 이미지는 필요한 최소한의 패키지만을 포함하기 때문에, 이미지 크기가 상대적으로 작습니다. 그러나 alpine 버전보다는 더 크며, 필요한 패키지가 없을 경우 별도로 설치해야 할 수도 있습니다.