코딩과로그
[기록용] Multi-Stage Build (feat: Frontend 배포) 본문
도커 파일로 이미지를 만들 때,
'빌드 할 때의 필요한 라이브러리'를 사용하고 사용한 라이브러리는 이미지에 포함시키고 싶지 않을 때 어떻게 할까?
멀티 스테이지 방식으로 구현이 가능하다.
아래와 같이 두개의 스테이지로 나눌 수 있다.
# 첫번째 스테이지
# build-stage라는 tag의 스테이지
FROM node:14-alpine as build-stage
WORK /app
COPY package.json .
RUN npm install
COPY . .
# /app/build 폴더에 결과물이 빌드되어 나옴.
RUN npm run build
# 두번째 스테이지
FROM nginx:stable-alpine
# build-stage에서 나온 결과값을 복사함.
COPY --from=build-stage /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "demon off;"]
두번째 스테이지로 가면 기존(첫번째)의 스테이지는 이미지 결과물에 저장되지 않는다.
다만 첫번째 스테이지에서 나온 결과물을 두번째 스테이지에서 받아서 사용이 가능하다.
두번째 스테이지의 결과물이 최종 이미지가 된다.
'Docker' 카테고리의 다른 글
[기록용] docker context를 도커 데스크탑에서 docker-engine으로 변경함 (0) | 2023.04.11 |
---|---|
[기록용] 도커를 통한 배포 및 EC2 와 ECS의 차이점 (0) | 2023.04.02 |
[기록용] util용으로 도커 사용하기 (dockerfile에서 명시된 cmd외 다른 명령을 실행시키고 싶을 때) (0) | 2023.04.01 |
[기록용] 도커 컴포즈 명령어 정리 (ing) (0) | 2023.03.31 |
[기록용] 도커 컴포즈 파일 정리 (0) | 2023.03.31 |