Docker CRA Dockerizing, 컨테이너 생성
프로젝트 root 경로에 Dockerfile, Dockerignore 파일 설정하기
1. Dockerfile
# node 베이스 이미지(v17이 최신 버전이고 v16이 LTS 버전인데, 17로 사용할 경우 오류가 발생하므로 v16.x로 이용하자 )
FROM node:16-alpine3.13
# 임시 컨테이너 내에 파일들이 위치할 디렉토리(WORKDIR을 설정하지 않아도 라이징은 가능하지만, 기존에 존재하던 파일을 오버라이딩하거나 디렉토리의 구조가 깔끔하지 않을 수 있기 때문에 지정해주는 것이 좋다.)
WORKDIR /src/app
# 임시 컨테이너 안에는 package.json 파일이 없기 때문에 이후에 실행될 RUN yarn가 정상적으로 제기능을 하지 못한다. 때문에 package.json 파일을 컨테이너 안으로 복사하자.
# COPY '복사할 파일' '임시 컨테이너 내 복사하게 될 경로'
COPY package.json ./
# RUN은 docker image가 생성되기 전에 수행할 쉘 명렁어이다. 임시 컨테이너로 복사된 package.json의 종속성 모듈을 다운받도록 하자.
RUN yarn
# 프로젝트 경로에 있는 파일들을 컨테이너에 복사한다.(package.json 파일과 따로 copy를 해주는 이유는, build시 생기는 리드타임을 최소화시키기 위함이다.)
COPY ./ ./
# 컨테이너가 시작될 때 수행할 커맨드들을 지정하자.
CMD ["yarn", "start"]
2. .dockerignore
# node_modules 파일들은 위 dockerfile의 RUN yarn 과정에서 설치가 되기 때문에 로컬에서 복사가 될 필요가 없으므로 .dockerignore을 통해 제외시켜주도록 하자. (그대로 이미지를 생성하게 되면, dockerizing 속도도 느릴 뿐더러 파일 크기가 매우 무거워지게 된다.)
node_modules
3. 프로젝트 root directory
├── README.md
├── dockerfile.dev
├── package.json
├── public
├── src
├── tsconfig.json
└── yarn.lock
dockerfile
을dockerfile.dev
로 해준 이유는,dev
와prod
의 환경이 다를 수 있기 때문에 따로 지정해주는 것이 좋다.
Docker image 생성
sudo docker build -f dockerfile.dev -t docker_cra ./
- Dockerizing의 기준은 default로
dockerfile
이 되지만,dockerfile.dev
기준으로 image를 생성해야 하므로-f dockerfile.dev
를 추가해준다.
- 위와 같이 image 생성에 성공하였다.
Docker run image
sudo docker run --name port_test3 -p 3000:3000 docker_cra
- 생성된 docker image의 run을 통해 container를 생성한다.
-p 3000:3000
:local
의3000
포트와 실행중인 컨테이너의 포트(yarn start
을 통해 실행된dev local port
는3000
이다.)를 연결한다. 이를 포트 포워딩 또는 포트 매팽이라고 한다.
Reference
'Etc' 카테고리의 다른 글
TIL | Docker-compose 세팅 및 적용하기 (0) | 2021.12.05 |
---|---|
TIL | AWS EC2, pm2, nginx(reverse proxy) 사용하여 개발서버 외부 모니터링 환경 구축하기 (0) | 2021.12.03 |
TIL | Docker 컨테이너 쉘환경 접근 및 이미지 생성 (0) | 2021.11.21 |
TIL | 간단한 가로 스크롤바 구현하기 (0) | 2021.11.16 |
TIL | Meta tag (0) | 2021.11.07 |