본문 바로가기
DevOps/Docker

[Docker] : 도커 멀티 스테이지 활용해 빌드하기

by 오주현 2022. 2. 25.
반응형

멀티 스테이지를 이용한 Dockerfile 빌드하기

애플리케이션을 빌드할 때 많은 의존성 패키지, 라이브러리를 필요로 한다.

package main
import "fmt"
func main() {
        fmt.Println("hello word")
}

main.go 파일의 내용 , 텝과 공백 위치 조심해야 한다.

 

FROM golang
ADD main.go /root
WORKDIR /root
RUN go build -o /root/mainApp /root/main.go
CMD ["./mainApp"]

main.go를 컴파일하고 출력 프로그램을 실행하는 Dockerfile

 

docker build . -t go_helloworld

이제 빌드를 해본다.

 

docker images

명령어 확인 후 실행해 보면 내용에 비해 용량이 큰 것을 알 수 있는데 소스 코드 빌드에 사용된 각종 패키지와 라이브러리가 자리를 차지하고 있는 것이다.

 

17.05버전 이상의 도커는 이런 이미지의 크기를 줄이기 위해 멀티 스테이지 빌드 방법을 사용할 수 있는데 이것은 하나의 Dockerfile 안에 여러 개의 FROM 이미지를 정의해 빌드 완료 시 최종으로 생성 될 이미지의 크기를 줄이는 역할을 한다.

FROM golang
ADD main.go /root
WORKDIR /root
RUN go build -o /root/mainApp /root/main.go

FROM alpine:latest
WORKDIR /root
COPY --from=o /root/mainApp .
CMD ["./mainApp"]

이렇게 두 개의 FORM을 통해 다른 이미지를 명시해 준다.

 

docker build . -t go_helloworld:multi-stage

도커를 빌드한다.

 

이미지를 확인해 보면 사이즈가 작아진 것을 확인할 수 있다.

 

이렇게 멀티 스테이지 빌드는 반드시 필요한 실행 파일만 최종 이미지 결과물에 포함시켜 이미지 크기를 줄일 때 사용하면 된다.

 

 


📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.

반응형

댓글