[Docker] multistage-build로 배포하기

nzero·2024년 2월 2일

Where is the Book

목록 보기
4/6

multistage-build란?

도커 이미지를 경량화하기 위한 방법이다. 기존에 빌더와 러닝을 위한 Dockerfile을 각각 작성하고, 배치파일로 실행을 하던 번거로움을 하나의 Dockerfile로 간단하게 해결 가능하다.

dockerfile 작성

as builder로 빌더 이름을 설정 가능하고, 해당 빌더 내에서 빌드한 파일은 COPY --from=[빌더명]으로 불러올 수 있다.

#BUILDER
FROM golang:latest as builder

WORKDIR /app
ARG CGO_ENABLED=0

COPY . .
RUN go mod download
RUN go build -o witb

# RUNNING
FROM scratch
RUN mkdir /app
COPY --from=builder /app/witb /app/witb
ENTRYPOINT ["/app/witb"]

작성한 파일로 빌드해보자

docker build -t witb .

다른 이미지들보다 확연히 작은 용량으로 빌드 완료

참조

https://docs.docker.com/develop/develop-images/multistage-build/
https://www.hahwul.com/2020/10/07/docker-multistage-build-for-optimazation/
https://dev.to/sadeedpv/creating-a-dockerfile-for-your-go-backend-20n5

0개의 댓글