Development workflow
- PR이 master에 머지되면, Travis CI를 통해 테스트 수행
- 테스트가 통과되면 AWS hosting(elastic beanstalk)으로 넘어감
- Docker는 필수 요소는 아니지만, 이 과정을 매우 쉽게 바꿀 수 있다
Docker volume
- Docker로 컨테이너 실행 후, 소스 코드를 변경해도 바로 반영(HMR)이 안 됨.
- 이는 당연한 게, 그 당시의 스냅샷을 그대로 가지고 있기 때문.
- Docker volume은 컨테이너 안에 폴더를 카피하는 것이 아닌, 로컬 머신의 레퍼런스를 가지게 할 수 있음.
Multi-step build process
npm run build
도 돌려야 하고… nginx라는 프로덕션용 서버도 돌려야 하는데,
- base image가 여러 개가 필요함 (node/nginx)
# Build phase
FROM node:16-alpine as builder
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
# Run phase
FROM nginx
COPY --from=builder /app/build /usr/share/nginx/html